Python 如何从一个文本中取每一行到另外一个文本中匹配

2019-11-21 16:32:43 +08:00
 zhuzhuaini
假设有 A/B 两个文本 用 python 如何先从 A 中取出第一行 然后到 B 文本中每一行去匹配,如果匹配中了就啥也不干继续从 A 文本中取下一行匹配,如果在 B 文本中每一行都没匹配到,就输出 A 文本中第一行的数据然后继续去 A 文本中下一行去匹配
研究了一会发现不能达到自己的预期,特来请教.谢谢!
4737 次点击
所在节点    Python
33 条回复
alex321
2019-11-21 17:24:16 +08:00
提取的是 A 中有的,B 中没有的。。

a, b = [], []

with open('A.txt', 'r') as f:
....a = f.read().splitlines()
with open('B.txt', 'r') as f:
....b = f.read().splitlines()

print(list(set(a).difference(set(b))))

完事儿。
cherbim
2019-11-21 17:38:20 +08:00
@zhuzhuaini 你的文件是 UTF-8 编码,然后估计你的 ide 默认 gbk,然后有些字符不能解码,需要指定 utf 解码
JerryCha
2019-11-21 17:57:02 +08:00
@nznd 这可太暴力了
zh584728
2019-11-21 18:01:29 +08:00
@nznd 万一是几百万行的数据,这可就要算到明年了(狗头
bequt
2019-11-21 20:06:35 +08:00
如果是要结果的话, 直接用 wps excel 马上就得了
bequt
2019-11-21 20:09:13 +08:00
进行查重就的结果了
layorlayor
2019-11-21 20:31:55 +08:00
用一个特殊的字符把 B 文件连成一行,剩下就是一个 AC 自动机啦
snoopygao
2019-11-21 22:18:58 +08:00
这个东西我刚研究过,首先在 A 中取出第一行,然后使用字符串对比就行
with open file_b as b:
b_content = b.read()
with open file_a as a:
a_content = a.readline()
if a_content in bcontent:
print('this line in b')
//此处需要循环读 a 文件的内容,b 文件最好别太大,要不然内存耗不起
robinlovemaggie
2019-11-21 22:45:37 +08:00
@zhuzhuaini
你好忘了说你的预期是什么~
nccer
2019-11-22 01:46:57 +08:00
你可以对 ab 两个文件分别排序,然后对 ab 两个文件做一个归并排序,做排序的时候把重复行找出来。
XavierXJ
2019-11-22 10:11:44 +08:00
什么学校???高中学 Python😳
levelworm
2019-11-22 11:25:54 +08:00
我琢磨着数据量不大的话导入到 sqlite 里头做查询怎么样。。。
zhuzhuaini
2019-11-22 13:13:28 +08:00
@miemiekurisu
@levelworm
@XavierXJ
@nccer
@robinlovemaggie
@layorlayor
@bequt
@zh584728
@alex321
@miemiekurisu
感谢以上所有的大佬提供的方案......我最后使用了
@ClericPy 这位大佬的代码...从昨天下午到刚刚一直在调试,,,最后发现是 for 下接了个 else,,,我一直在 if 下接 else 导致一直不对,现在已经达到了我的心理预期....
再次感谢以上所有大佬!!谢谢!!

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/621811

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX