Форум сайта python.su
0
Ребят, помогите разобраться, я чет запутался в решении проблемы. Изучаю язык недавно.
Задача такова.
У меня есть XML файл, в нем есть много атрибутов. Меня интересует атрибуты field_60=“тут любое число №1/”.
Нужно найти во всем документе эти атрибуты(их много встречается в тексте) и к записи приведенной выше нужно добавить конкретное число. Например, у меня есть запись field_60=“12/” мне ее нужно поменять на field_60=“12/77” , и так во всем документе. Я начал решать задачу с помощью регулярных выражений и модуля re. Но успеха не достиг. Подскажите, кто знает, как можно решить мою задачу. Мой код ниже.
import re d1=open("d1_2.xml")#открываю xml документ на чтение d1str=d1.read()#читаю документ в строку replData=re.sub('(field_60="[0-9]/)"','999', d1str)#применил метод sub для замены, но к сожалению у меня заменилась вся запись field_60 на 999(так как второй параметр может быть либо строкой либо функцией) outputFile=open("outputD1.xml","w")#открываю новый файл для записи outputFile.write(replData) outputFile.close
Офлайн
857
>>> import re >>> >>> pat = r'(\sfield_60=.)(12)(/)(.\s)' >>> rep = r'\1\2\g<3>77\4' >>> >>> s = 'abc field_60="12/" def' >>> >>> out = re.sub(pat, rep, s) >>> print(out) abc field_60="12/77" def >>>
bangzilla
У меня есть XML файл
Офлайн
0
Спасибо, почитаю за модули для XML.
Пока этот код не совсем понял.
В переменной pat вы создали регулярное выражение и разбили его на группы?
В переменной rep не понял запись g<3>.
Не могли бы пояснить?
Отредактировано bangzilla (Июнь 29, 2014 10:49:50)
Офлайн
857
bangzilla
Не могли бы пояснить?
Офлайн
0
Спасибо
Офлайн