小编Álv*_*jar的帖子

使用正则表达式删除包含数字的双引号

我正在使用以下字符串:

'"name": "Gnosis", \n        "symbol": "GNO", \n        "rank": "99", \n        "price_usd": "175.029", \n        "price_btc": "0.0186887", \n        "24h_volume_usd": "753877.0"'
Run Code Online (Sandbox Code Playgroud)

并且我必须re.sub()在 python 中使用仅替换"包含数字的双引号 ( ),以便稍后在 JSON 中解析它。我试过一些正则表达式,但没有成功。这是我最好的尝试:

exp = re.compile(r': (")\D+\.*\D*(")', re.MULTILINE)
response = re.sub(exp, "", string)
Run Code Online (Sandbox Code Playgroud)

我已经搜索了很多类似的问题,但没有找到另一个类似的问题。

编辑:

最后我使用了(感谢S. Kablar):

fomatted = re.sub(r'"(-*\d+(?:\.\d+)?)"', r"\1", string)
parsed = json.loads(formatted)
Run Code Online (Sandbox Code Playgroud)

问题是此端点以 JSON 形式返回格式错误的字符串。

其他用户使用 for 循环回答“首先用 json 解析字符串,然后将数字转换为浮点数”,我认为这是一种非常低效的方法,此外,您将被迫在 int 或 float 类型之间进行选择你的回应。毫无疑问,我已经写了这篇要点,向您展示了不同方法与基准测试之间的比较,现在我将在这种情况下信任正则表达式。

谢谢大家的帮助

python regex

4
推荐指数
1
解决办法
4549
查看次数

标签 统计

python ×1

regex ×1