|
2 / 2 / 1
Регистрация: 08.11.2019
Сообщений: 79
|
|||||||||||
Поиск и замена одной цифры в массиве12.04.2020, 19:20. Показов 3776. Ответов 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
Поиск/замена в массиве
Поиск элементов и замена в двумерном массиве Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование
. \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json>
Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом.
# Check if. . .
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|