Найти - Пользователи
Полная версия: Парс
Начало » Python для новичков » Парс
1
Toisen
Дана строка следующего вида с переменной длиной:
<reply><process id="3135"/><threads><thread id="-1233097872" name="Storage Writer"/><thread id="-1297089680" name="Local Server"/><thread id="-1242563728" name="File Manager Writer"/><thread id="-1288701072" name="Watcher"/><thread id="-1271923856" name="Mailer"/><thread id="-1305478288" name="Web Server"/><thread id="-1263535248" name="XML Synchronizer"/><thread id="-1224709264" name="Logger"/><thread id="-1250952336" name="Session Cleaner"/><thread id="-1218574656" name="Main"/><thread id="-1280312464" name="Backup"/></threads><garbagecollector><objects>37847</objects><garbage>0</garbage><collection><generation>134</generation><generation>4</generation><generation>1</generation></collection></garbagecollector></reply>
Мне нужно из нее выцепить id и name.
делаю следующее:
message #строка
pattern = re.compile(r'<reply><process\s+id="([^"]+)"/><thread\s+id="([^"]+)"\s+name="([^"]+)"\s*/>')
ids,ident,name = pattern.match(message).groups()

Но не знаю как мне сделать шаблон на строку из n-ного числа пар id и name.
Покорно прошу помощи.
Если кто-то знает как это сделать проще - милости прошу
Dartanyan
сам нуб, ты пробовал lxml?
Toisen
Нет, не пробовал. И раньше дела не имел. Первую неделю на питоне ^_^'
Toisen
450 страниц документации лопатить чтобы распарсить… Такое ощущение, что мне предложили травить тараканов ядерными бомбами.
warik
re.findall(re, text) - находит все совпадения в отличие от match

matches = re.findall(r'id="(-*\d+)" name="([\w\s]+)"', text)

Регулярка возвращает лист из листов с 2мя элементами - id, name
Где text - Ваша строка.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB