У меня есть строка 'string1' с двумя видами позиций: обратное положение (обозначенное позицией = изменение) и прямая позиция (обозначенная только позицией =). Чтобы убедиться, возьмите, например, буквы = abcdef и position = change (1-4). Буквы между первым и четвертым пробелами, которые являются bcd, должны быть извлечены, а буква c должна быть заменена номером 1. По причинам, не относящимся к делу, в случае с обратной позицией всегда есть буква c, должен быть заменен цифрой 1. В случае прямого положения замена не выполняется.Извлеките и замените буквы из строки одновременно.
Мне нужно сделать это по петле, и я написал код, который я вам показываю, но он не работает.
string1='*This is an inverse position [position=change(1-4)]in a long sentence\n*This is a direct position [position=2-7] in a long sentence'
import re
a=re.finditer(r'(\*This).*\]', string1)
for element in a:
print element.group()
letters='abcdefghijklmno'
b=re.finditer(r'([0-9]+)-([0-9]+)', element.group())
for i in b:
if element.group().find('change'):
changedletters=letters[int(i.group(1)) : int(i.group(2))].replace('c', '1')
print element.group()+changedletters
else:
print letters[int(i.group(1)) : int(i.group(2))]
Что не работает? Имеются ли сообщения об ошибках? Каков ожидаемый и реальный результат? – Daniel
@ Даниэль, когда я запускаю этот код (и добавляет() брекеты при использовании печати), выход: '* Это обратная позиция [position = change (1-4)] * Это прямая позиция [position = 2-7] * Это прямая позиция [позиция = 2-7] 1defg' – implicati0n
@ Даниэль Результат (>>> означает новую строку, извините, я не знаю, как написать новую строку): > >> * Это обратная позиция [position = change (1-4)] >>> * Это прямая позиция [позиция = 2-7] >>> * Это прямая позиция [позиция = 2- 7] 1defg И ожидаемое: >>> * Это обратное положение [position = change (1-4)] b1d >>> * Это прямая позиция [позиция = 2-7] cdefg Она читает только последнее утверждение, а не весь цикл (не читает случай обратной позиции), а также заменяет букву c номером 1 в прямом положении (когда он этого не должен делать). Сообщения об ошибках отсутствуют. – Dang