|
2 / 2 / 1
Регистрация: 08.11.2019
Сообщений: 79
|
|||||||||||
Поиск и замена одной цифры в массиве12.04.2020, 19:20. Показов 3744. Ответов 17
Здравствуйте уважаемые форумчане.
В файле есть строка вида - Data value="00000000 00000000" Нужно проверить последнюю цифру и если она ноль, то заменить на единицу. Ищу регуляркой, находит корректно, именно последнюю цифру
re.search понимает, что нужно искать только то, что выделено скобками, а re.sub не понимает.Подскажите, пожалуйста, как решить данную задачу?
0
|
|||||||||||
| 12.04.2020, 19:20 | |
|
Ответы с готовыми решениями:
17
Замена цифры в строчном массиве числом символа '_' Поиск и замена в зависимости от впередиидущей цифры |
|
815 / 527 / 214
Регистрация: 22.12.2017
Сообщений: 1,495
|
||||||
| 12.04.2020, 19:42 | ||||||
0
|
||||||
|
2 / 2 / 1
Регистрация: 08.11.2019
Сообщений: 79
|
|
| 12.04.2020, 21:48 [ТС] | |
|
codcw, у меня же тоже самое, только через переменную. Это не работает.
0
|
|
|
815 / 527 / 214
Регистрация: 22.12.2017
Сообщений: 1,495
|
||||||
| 13.04.2020, 01:24 | ||||||
1
|
||||||
|
2 / 2 / 1
Регистрация: 08.11.2019
Сообщений: 79
|
|
| 13.04.2020, 08:57 [ТС] | |
|
codcw, да, в данном конкретном случае так можно выкрутиться, но мне нужно будет ещё и другие цифры в этой строки проверять и менять. И этот способ уже не пройдёт.
0
|
|
|
|
||||||
| 13.04.2020, 09:48 | ||||||
Сообщение было отмечено TheBogdan как решение
Решение
Замена последней цифры, предпоследней, предпредпоследней...
3
|
||||||
|
150 / 120 / 36
Регистрация: 01.11.2019
Сообщений: 425
|
||||||
| 13.04.2020, 11:28 | ||||||
|
Если надо проверить по условию, то мне кажется тут без доп функции не обойтись
1
|
||||||
|
2 / 2 / 1
Регистрация: 08.11.2019
Сообщений: 79
|
|
| 13.04.2020, 13:39 [ТС] | |
|
palva, дело в том, что строка данных не состоит из одних нолей, там нули и единицы вперемешку, поэтому в явном виде "Data value="00000000 00000000"" её нельзя указывать.
Но решение пришло. Поступил так - Нахожу нужную строку oldCode = re.search(r'Data value="\d{8} \d{8}"', fileContent)[0]Заменяю в ней цифру c помощью Вашего кода newCode = re.sub(r'\d(\D+$)', r'1\1', oldCode)Целиком заменяю старую строку на новую fileContent = re.sub(r'Data value="\d{8} \d{8}"', newCode, fileContent)Может и не красиво, но работает. Спасибо за подсказку! ![]() Добавлено через 9 минут volkomorov, это пока сложно для меня. Подскажите, пожалуйста, что такое c[28] , почему 28?
0
|
|
|
150 / 120 / 36
Регистрация: 01.11.2019
Сообщений: 425
|
||||||
| 13.04.2020, 14:19 | ||||||
|
Data value="00000000 00000005" имеет в себе 29 символов
Разбиваем строку с помощью split() и получаем список этих символов. Т.к. индексация начинается не с единицы, а с нуля, то индекс первого символа "D" будет - 0, а последнего - 28 Таким образом мы можем поменять любые символы по условию Добавлено через 17 минут Так немного запутал Data value="00000000 00000005" имеет в себе 30 символов Разбиваем строку с помощью split() и получаем список этих символов. Т.к. индексация начинается не с единицы, а с нуля, то индекс первого символа "D" будет - 0, а последнего '"'- 29 Таким образом мы можем поменять любые символы по условию Добавлено через 10 минут Вот, добавил принты для наглядности что происходит, запустите и проанализируйте
1
|
||||||
|
Модератор
|
|||||||||||
| 13.04.2020, 14:35 | |||||||||||
|
volkomorov, а не проще ли, find_item[:-1] + "1" использовать?
Добавлено через 9 минут palva, этот вариант не подойдет, все числа будут меняться:
Костыльно выглядит, но все таки:
UPD: Только сейчас заметил что первый пример, вообще не работает.*
0
|
|||||||||||
|
150 / 120 / 36
Регистрация: 01.11.2019
Сообщений: 425
|
|
| 13.04.2020, 14:37 | |
|
Вы хоть задание читали? Написано же - "Нужно проверить последнюю цифру и если она ноль, то заменить на единицу"
А если она не "0", а если надо заменить четвертую цифру с конца?
1
|
|
|
Модератор
|
|||||||
| 13.04.2020, 14:44 | |||||||
|
volkomorov, оу, неуглядел, согласен, извеняюсь.
Добавлено через 55 секунд volkomorov, тогда так:
0
|
|||||||
|
150 / 120 / 36
Регистрация: 01.11.2019
Сообщений: 425
|
|
| 13.04.2020, 14:45 | |
|
А если по двум условиям одновременно? Например, последнюю на единицу на четвертую с конца на 5?
0
|
|
| 13.04.2020, 15:17 | |
|
DmFat, Я не спец по работе с файлами. Вопрос:
Если файл состоит из множества строк и мы меняем одну строку, то производится перезапись всего файла? Нет способа загрузив одну строку и изменив ее записать новый вариант в то же место в файле, при необходимости сдвинув текст, который идет за этой строкой?
0
|
|
|
Модератор
|
||
| 14.04.2020, 15:02 | ||
|
0
|
||
| 14.04.2020, 22:12 | ||
|
Но в питоне прямых команд удалить конец файла или вставлять внутрь файла я не знаю. В общем для себя я решил перезаписывать файл целиком, тем более что я не работаю со сверх большими файлами. ![]() Спасибо что ответили.
0
|
||
| 14.04.2020, 22:12 | |
|
Помогаю со студенческими работами здесь
18
Поиск/замена в массиве
Поиск элементов и замена в двумерном массиве Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога
Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip"
Извлеките архив и вы увидите. . .
|
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога
Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д.
Сборка примера
Скачайте. . .
|
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net
REST сервисы временно не работают, только через Web.
Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
|
|
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
|
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
|
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма).
На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
|
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ *
Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи
и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
|