-1

我有一个大文件,我需要使用 RE 进行搜索

这是该文件的示例:

76360247039795},{"number":522141635,"catalog"

我只需要打印出 {"number": 之后出现的数字流

该文件太大,无法全部发布,并且该字符串出现了大约 200 次。这就是为什么我认为我需要使用 RE 并且从我的研究中我认为我需要使用的是一种称为“环顾四周”的东西,但不确定。

我已经尝试这个很久了,请帮忙

提前致谢

4

4 回答 4

1
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)
于 2013-03-09T19:20:12.567 回答
1
import re
s = '76360247039795},{"number":522141635,"catalog"'
nl = re.findall('"number":(\d{9})', s)
于 2013-03-09T19:22:51.663 回答
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"]
于 2013-03-09T19:26:30.793 回答
0

试试这个,使用 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']

(...) 匹配括号内的任何正则表达式,并且可以在执行匹配后检索组的内容

于 2013-03-09T19:16:31.217 回答