【问题标题】:Python: How to remove quotes around numbers from stringPython:如何从字符串中删除数字周围的引号
【发布时间】:2016-03-30 17:50:24
【问题描述】:

我有一个这样的python字符串:

"""
{id: 'id_0_4', value: '8450223051', name: 'XAD3', parent: 'id_0'},
{id: 'id_0_5', value: '509071269', name: 'ABSD', parent: 'id_0'}
"""

我想从字符串中删除 value 之后出现的数字周围的单引号。

如何编写一个只检测这些数字并替换它们周围的引号的正则表达式?

【问题讨论】:

  • 你试过使用int吗?
  • 很遗憾这不是合法的 JSON,这将使解析、修复和序列化变得更加简洁。
  • 我怎样才能使它合法的 JSON。我试过 json.dumps 但没有任何效果

标签: python regex string python-3.x


【解决方案1】:

捕获组中的号码,重新插入组:

>>> import re
>>> s = """{id: 'id_0_4', value: '8450223051', name: 'XAD3', parent: 'id_0'}, {id: 'id_0_5', value: '509071269', name: 'ABSD', parent: 'id_0'}"""
>>> re.sub("'(\d+)'", r'\1', s)
"{id: 'id_0_4', value: 8450223051, name: 'XAD3', parent: 'id_0'}, {id: 'id_0_5', value: 509071269, name: 'ABSD', parent: 'id_0'}"

或者,如果这必须特定于“值”之后的数字:

>>> re.sub("(value:\s*)'(\d+)'", r'\1\2', s)
"{id: 'id_0_4', value: 8450223051, name: 'XAD3', parent: 'id_0'}, {id: 'id_0_5', value: 509071269, name: 'ABSD', parent: 'id_0'}"

【讨论】:

  • @AbtPst 注意虽然这在技术上回答了您的问题,但我更愿意使用您可以ast.literal_eval 或使用json 模块加载的字符串,然后更改以更健壮的方式产生 dict。所以也许可以在上游修复你的字符串格式。
猜你喜欢
  • 2020-06-10
  • 2018-10-29
  • 1970-01-01
  • 2021-08-11
  • 1970-01-01
  • 2020-02-08
  • 2020-07-03
  • 2017-04-18
  • 2014-02-16
相关资源
最近更新 更多