我正在尝试使用正则表达式从文件中捕获数据并引用它。我想捕获“邮政编码”和逗号之间的所有内容。当我替换该值时,它显示为“ whateverdata(末尾没有引号。)为什么?

数据将如下所示:"State":"NC","Postal Code":27605,"Description":null,

我的代码:

pattern = r'"Postal Code":(.+),'
replacement = r'"\1"'
jsonObj = re.sub(pattern, replacement, jsonObj)


由于这是json,是否有更好的方法来解决?看来这将是一个普遍的问题

最佳答案

您需要在此处使用非贪婪匹配(如评论中建议的@hwnd):

r'"Postal Code":(.+?),'


或者,由于您知道这是邮政编码,因此请匹配一个或多个数字:

r'"Postal Code":(\d+),'


演示:

>>> import re
>>> pattern = re.compile(r'"Postal Code":(\d+),')
>>> source = '"State":"NC","Postal Code":27605,"Description":null,'
>>> pattern.search(source).group(1)
'27605'

09-15 20:36