我有一个大文件,我需要使用 RE 进行搜索
这是该文件的示例:
76360247039795},{"number":522141635,"catalog"
我只需要打印出 {"number": 之后出现的数字流
该文件太大,无法全部发布,并且该字符串出现了大约 200 次。这就是为什么我认为我需要使用 RE 并且从我的研究中我认为我需要使用的是一种称为“环顾四周”的东西,但不确定。
我已经尝试这个很久了,请帮忙
提前致谢
import re
with open('myLargeFile.txt', 'r') as myFile:
numbersList = re.findall('{"number":(\d{9})', myFile.read(), re.DOTALL)
print numbersList
这将创建一个仅包含出现在字符串后面的 9 位数字的列表{"number":
如果您要查找的数字可能多于或少于 9 位,请改用此 reg ex:
numbersList = re.findall('{"number":(\d{x,y})', myFile.read(), re.DOTALL)
, 并替换 x 和 y 以满足您的需要。x 代表数字允许的最低位数,y 代表最高位数。例如,如果您想查找所有 5 到 9 位数字之间的数字,则 reg ex 将变为:
numbersList = re.findall('{"number":(\d{5,9})', myFile.read(), re.DOTALL)
import re
s = '76360247039795},{"number":522141635,"catalog"'
nl = re.findall('"number":(\d{9})', s)
对于您的 JSON 数据,请执行以下操作:
import json
with open("filename.json") as f:
data = json.loads(f.read())
现在假设您的文件是字典列表,如下所示:
[
{"number": 522141635, "catalog": "..."},
....
{"number": 999999999, "catalog": "..."}
]
将您的号码打印为:
for dictionary in data:
print dictionary["number"]
试试这个,使用 pythonre
模块,定义一个模式并在一个字符串中找到你的模式s
。
>>> s='76360247039795},{"number":522141635,"catalog"'
>>> import re
>>> re.findall('number":([0-9]+)', s) #this pattern
['522141635']
>>> re.findall('number":([0-9]{9})', s) #or this pattern works.
['522141635']
(...) 匹配括号内的任何正则表达式,并且可以在执行匹配后检索组的内容