Я записал файл в большую строку. Я хочу проанализировать строку и создать список диктов на основе jobno. Каждое задание будет иметь переменное количество пар ключ / значение в произвольном порядке. Единственное, на что я могу рассчитывать, это jobno: пара xxxx всегда обозначает начало новой работы
python 2.7
import re
bigstr = "jobno: 4859305 jobtype: ASSEMBLY name: BLUEBALLOON color: red jobno: 3995433 name: SNEAKYPETE jobtype: PKG texture: crunchy"
regexJobA = re.compile(r'((\w+):\s(\w+)\s?)', re.DOTALL)
for mo in regexJobA.finditer( bigstr):
keyy, valu = mo.groups():
print keyy + ":" + valu
выходы
jobno:4859305
jobtype:ASSEMBLY
name:BLUEBALLOON
color:red
jobno:3995433
jobtype:PKG
texture:crunchy
который я мог бы забить / файл / песок / краска для работы. Но должно быть более элегантное регулярное выражение, которое бы неявно создавало рабочие места, что-то вроде
regexJobB = re.compile(r'((jobno):\s(\w+)\s?)((*not_jobno*):\s(\w+)\s?)+', re.DOTALL)
сделает трюк. Но как отрицать (jobno) группу? Или используйте некоторый ум умных взглядов / взглядов назад / умов, чтобы получить
jobno:4859305 jobtype:ASSEMBLY name:BLUEBALLOON color:red
jobno:3995433 jobtype:PKG texture:crunchy
ТИА,
code_warrior