我有一个大文件,我需要使用RE的
进行搜索以下是该文件的示例:
76360247039795},{"number":522141635,"catalog"
我只需打印出{“number”后出现的数字流:
此文件太大而无法全部发布,此字符串出现约200次。这就是为什么我认为我需要使用RE并且从我的研究中我认为我需要使用的是一种叫做“环顾四周”的东西,但不确定。
我已经尝试了很长时间了,请帮忙
提前致谢
答案 0 :(得分:1)
import re
with open('myLargeFile.txt', 'r') as myFile:
numbersList = re.findall('{"number":(\d{9})', myFile.read(), re.DOTALL)
print numbersList
这将创建一个列表,该列表仅包含出现在字符串{"number":
如果您要查找的数字可能多于或少于9位数,请改用此注册表:
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)
答案 1 :(得分:1)
import re
s = '76360247039795},{"number":522141635,"catalog"'
nl = re.findall('"number":(\d{9})', s)
答案 2 :(得分:0)
尝试使用python re
模块,定义模式并在字符串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']
(...)匹配括号内的正则表达式 并且在匹配之后可以检索组的内容 执行
答案 3 :(得分:0)
对于您的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"]