【问题标题】:Decode regex into dictionary in Python在 Python 中将正则表达式解码为字典
【发布时间】:2015-04-27 00:20:22
【问题描述】:

我在 Python 字符串中有正则表达式字符串

我希望能够解码以下字符串 并将它们映射到字典中

但我不知道如何用 unicode 解码它们。

有没有办法解决这个问题?

谢谢!

import json
tt = """
"mykey":"(aaa_\\d+){13})_*.*"
"""

json.loads(tt)

ttx = json.dumps(tt)
rm = json.loads(ttx)

>>> type(rm)
<type 'unicode'>

【问题讨论】:

  • 不要使用内置关键字作为变量名。
  • 已修复。谢谢阿维纳什
  • 所以你有一个对单个字符串进行编码的 json(这可能是一个 RE 模式)——what你期望结果是“字典”吗?跨度>
  • 我希望能够使用 rm["mykey"] grep 正则表达式
  • 源字符串是从哪里来的,不是像上面那样硬编码到你的代码中,是吗?

标签: python regex json python-2.7


【解决方案1】:

tt 不是有效的 JSON 字符串 - 您似乎未能发布在调用 json.loads(tt) 时收到的 ValueError 消息。

如果您是json.dumps(tt),那么您只需将整个多行字符串编码为一个 JSON 对象,该对象在解析时会解码回一个字符串,而不是字典(这就是它属于 type(unicode) 的原因)。

为了获得有效的 JSON 字符串,您需要用大括号将“字典条目”括起来,并且必须正确转义反斜杠。以下“作品”:

>>> tt = """{
... "mykey":"(aaa_\\\\d+){13})_*.*"
... }"""
>>> rm = json.loads(tt)
>>> type(rm)
<type 'dict'>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-18
    • 1970-01-01
    • 1970-01-01
    • 2016-01-08
    相关资源
    最近更新 更多