我现在正在做一个项目,我必须处理它>;10亿条线路。 此文件由4个标记组成,其中包含url,如下所示:
<stackoverflow.com> <stackoverflow.org> <stackoverflow.net> <stackoverflow.biz>
我从一个txt文件中提取行,然后我必须得到1&;3个标签将它们输入到另一个函数中
with open("file.txt", "r") as f:
for i in f:
tag1 = i.split("<")[:2][1][:-2]
tag2 = i.split("<")[:5][3][:-2]
我将这些提取的标记输入一个函数,我将其命名为tupleFunction,该函数返回许多元组,如:
从tag1开始:
('stackoverflow.com/123456','stackoverflow.com',stackoverflow.com')
('stackoverflow.com/1234567','stackoverflow.com',stackoverflow.com')
('stackoverflow.com/12345678','stackoverflow.com',stackoverflow.com')
从tag2开始:
('stackoverflow.com/654321','stackoverflow.com',stackoverflow.com')
('stackoverflow.com/7654321','stackoverflow.com',stackoverflow.com')
('stackoverflow.com/123456','stackoverflow.com',stackoverflow.com')
从元组的第一个元素开始,我需要得到两个元组的交集,在本例中:
('stackoverflow.com/123456')
我通过运行以下代码获得此结果并将其附加到文本文件中:
a = [f for f, *_ in tuple1]
b = [f for f, *_ in tuple2]
c = str(set(a).intersection(b))[2:-2]
with open("res.txt", "a") as output:
output.write(c)
这些代码看起来像:
with open("file.txt", "r") as f:
for i in f:
tag1 = i.split("<")[:2][1][:-2]
tag2 = i.split("<")[:5][3][:-2]
tuple1 = tupleFunction(tag1)
tuple2 = tupleFunction(tag2)
a = [f for f, *_ in tuple1]
b = [f for f, *_ in tuple2]
c = str(set(a).intersection(b))[2:-2]
with open("res.txt", "a") as output:
output.write(c)
我的问题是:有没有更有效的方法来执行准确的过程?我当前的代码需要一个月才能完成:-(
非常感谢您的帮助
这些文件看起来像带有自定义分隔符和引号的CSV。我可能会将它们加载到一个
pandas
表中,然后从那里进行处理相关问题 更多 >
编程相关推荐