gpt4 book ai didi

python - python中多次出现的正则表达式

转载 作者:太空宇宙 更新时间:2023-11-03 14:22:13 25 4
gpt4 key购买 nike

我需要解析具有多种语言代码的行,如下所示

008800002     Bruxelles-Nord$Br�ussel Nord$<deu>$Brussel Noord$<nld>
  • 008800002做一个ID
  • Bruxelles-Nord$Br�ussel Nord$是 name1
  • deu成为语言一员
  • $Brussel Noord$成为二号人物
  • nld作为第二语言。

所以,这个想法是名称和语言可以出现 N 次。我需要把它们全部收集起来。<> 中的语言长度为 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>作为语言。

最佳答案

分两步进行。首先将 ID 与名称/语言对分开;然后在名称/语言部分使用 re.finditer 迭代这些对并将它们填充到字典中。

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

关于python - python中多次出现的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26138013/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com