我需要解析具有多个语言代码的行,如下所示
008800002 Bruxelles-Nord$Br�ussel Nord$<deu>$Brussel Noord$<nld>
008800002
是id Bruxelles-Nord$Br�ussel Nord$
是name1 deu
是第一语言$Brussel Noord$
是名字二nld
是第二语言。<>
中的语言长度为3个字符(固定)
所有名称都以$
符号结尾。
我试过这个,但它没有给出预期的输出。
x = re.compile('(?P<stop_id>\d{9})\s(?P<authority>[[\x00-\x7F]{3}|\s{3}])\s(?P<stop_name>.*)
(?P<lang_code>(?:[<]\S{0,4}))',flags=re.UNICODE)
我不知道如何获得重复的元素。 需要
Bruxelles-Nord$Br�ussel Nord$<deu>$Brussel Noord$
为stop_name,<nld>
为语言。
答案 0 :(得分:3)
分两步完成。第一个单独的ID来自名称/语言对;然后在名称/语言部分使用re.finditer
迭代对,并将它们填入dict。
import re
line = u"008800002 Bruxelles-Nord$Br�ussel Nord$<deu>$Brussel Noord$<nld>"
m = re.search("(\d+)\s+(.*)", line, re.UNICODE)
id = m.group(1)
names = {}
for m in re.finditer("(.*?)<(.*?)>", m.group(2), re.UNICODE):
names[m.group(2)] = m.group(1)
print id, names
答案 1 :(得分:2)