gpt4 book ai didi

Python 删除 JSON 子字符串

转载 作者:太空狗 更新时间:2023-10-30 02:34:30 26 4
gpt4 key购买 nike

如果我有一个字符串,其中有一个像这样的有效 JSON 子字符串:

 mystr = '100{"1":2, "3":4}312'

仅提取 JSON 字符串的最佳方法是什么?外面的数字可以是任何东西({} 除外),包括换行符和类似的东西。

说明一下,这就是我想要的结果

  newStr = '{"1":2, "3":4}'

我能想到的最好的方法是使用 findrfind 然后获取子字符串。这对我来说似乎太冗长而且它不符合 python 3.0(我更喜欢但不是必需的)

感谢任何帮助。

最佳答案

请注意,以下代码非常假定在 JSON 字符串的两边除了非括号 Material 外没有任何其他内容。

import re
matcher = re.compile(r"""
^[^\{]* # Starting from the beginning of the string, match anything that isn't an opening bracket
( # Open a group to record what's next
\{.+\} # The JSON substring
) # close the group
[^}]*$ # at the end of the string, anything that isn't a closing bracket
""", re.VERBOSE)

# Your example
print matcher.match('100{"1":2, "3":4}312').group(1)

# Example with embedded hashmap
print matcher.match('100{"1":{"a":"b", "c":"d"}, "3":4}312').group(1)

简短的、非预编译的、非注释的版本:

import re
print re.match("^[^\{]*(\{[^\}]+\})[^}]*$", '100{"1":2, "3":4}312').group(1)

虽然为了维护,注释正则表达式是非常受欢迎的。

关于Python 删除 JSON 子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8068821/

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