当前位置: 首页 > 知识库问答 >
问题:

Python Regex将匹配转换为字典[重复]

耿星雨
2023-03-14
text = "Bob|19|01012017"
pat = re.compile("(?P<name>.+)|.*|(?P<bday>.+)") #hopefully this regex is correct
result = pat.match(text)
d = result.groupdict()
print d

我得到的d是:

{'bday': None, 'name': 'Bob|19|01012017'}
{bday: "01012017", name: "Bob"}

共有1个答案

巫马庆
2023-03-14

您需要转义以与字面匹配,否则模式将被解释为或:

text = "Bob|19|01012017"
pat = re.compile("(?P<name>.+)\|.*\|(?P<bday>.+)") 
result = pat.match(text)
d = result.groupdict()

d
# {'bday': '01012017', 'name': 'Bob'}

split方法的快速测试:

text = "Bob|19|01012017"
pat = re.compile("(?P<name>.+)\|.*\|(?P<bday>.+)")
​
def regex_to_dict(texts, pat):
    return [pat.match(text).groupdict() for text in texts]

regex_to_dict([text], pat)
# [{'bday': '01012017', 'name': 'Bob'}]

def split_to_dict(texts):
    dd = []
    for text in texts:
        name, _, bday = text.split('|')
        dd.append({'bday': bday, 'name': name})
    return dd

split_to_dict([text])
# [{'bday': '01012017', 'name': 'Bob'}]

texts = [text] * 100000

%timeit regex_to_dict(texts, pat)
# 10 loops, best of 3: 119 ms per loop

%timeit split_to_dict(texts)
# 10 loops, best of 3: 58.6 ms per loop
 类似资料:
  • 问题内容: 我无法访问JSON中的数据。我究竟做错了什么? 问题答案: 将字典转换为对象,而不是对象!因此,您必须使用方法将其加载到 请参阅作为保存方法和检索方法。 这是代码示例,可以帮助您进一步了解它:

  • 我无法访问JSON中的数据。我做错了什么?

  • 问题内容: 我正在尝试将Python字典转换为Python列表,以便执行一些计算。 那是我的尝试…但是我无法解决问题所在? 问题答案: 你的问题是,你必须和引号使他们的字符串,即你设置包含字符串,而不是变量的值。另外,您不会清除列表,因此每次都添加到列表中,而不是仅包含两个项目。 要修复您的代码,请尝试以下操作: 你并不需要将循环变量拷贝和我放弃了出来到另一个变量在使用它们之前。同样,您无需使用a

  • 问题 你想使用一个Python字典存储数据,并将它转换成XML格式。 解决方案 尽管 xml.etree.ElementTree 库通常用来做解析工作,其实它也可以创建XML文档。 例如,考虑如下这个函数: from xml.etree.ElementTree import Element def dict_to_xml(tag, d): ''' Turn a simple dict of ke

  • 问题内容: 我有一个包含四列的。我想将此DataFrame转换为python字典。我希望第一列的元素为,同一行中其他列的元素为。 数据框: 输出应如下所示: 字典: 问题答案: 该方法将列名设置为字典键,因此你需要稍微调整DataFrame的形状。将“ ID”列设置为索引,然后转置是实现此目的的一种方法。 还接受一个“东方”参数,你需要该参数才能为每列输出值列表。否则,将为每一列返回形式的字典。

  • 问题内容: l = [“a”, “b”, “c”, “d”, “e”] 我想将此列表转换为字典,例如: 因此,基本上,偶数将是关键,而赔率将是值。我知道我可以使用“非Python”方式(例如使用if语句的for循环)来完成此操作,但我相信应该有一种“ Python”方式来完成此任务。因此,感谢您的帮助:) 问题答案: 使用通常的石斑鱼食谱,您可以执行以下操作: Python 2: Python 3