Регулярное выражение таблицы Python MediaWiki (найти строки определенного формата, а затем извлечь подстроки внутри) - PullRequest
1 голос
/ 12 февраля 2010

Я пытаюсь найти все строки формата {{rdex|001|001|Bulbasaur|2|Grass|Poison}} в большом текстовом файле, а затем извлечь подстроки, соответствующие первым 001 и Bulbasaur, возможно, в виде кортежа.

Я предполагаю, что регулярное выражение с группами захвата может использоваться для обоих;Кто-нибудь может сказать мне подходящее регулярное выражение для использования в Python 3.1, а также возможную схему кода?Я регулярное выражение noob.

Спасибо!

Ответы [ 3 ]

1 голос
/ 12 февраля 2010
import re
text="""{{rdex|001|001|Bulbasaur|2|Grass|Poison}}"""
re.findall("\{\{[^|]+\|(\d+)\|\d+\|([^|]+)",text)
[('001', 'Bulbasaur')]
1 голос
/ 12 февраля 2010
re.match('^{{[^|]+\|([^|]+)\|[^|]+\|([^|]+)\|[^|]+\|[^|]+\|[^|]+\}}$', S).groups()
0 голосов
/ 12 февраля 2010
line="{{rdex|001|001|Bulbasaur|2|Grass|Poison}}"
s=line.find("{{")
e=line.find("}}")
if s != -1 and e != -1:
    sub=line[s+2:e].split("|")
    print sub[1],sub[3]

выход

$ ./python.py
001 Bulbasaur
...