我试图从文件中找到不常见的行。
如果我执行“打印行”,我会获得行,而如果我尝试将每行推到列出“diff_list”,则它会以十六进制存储。 请让我知道如何将行写入列表,当我打印出来时,我应该得到行而不是十六进制值
['\x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x0
0 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x0
0 \x00 \x00 \x00 \x00}\x00\r\x00', '\x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00
\x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00}\x00\r\x00', '\x00 \x00
\x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00
\x00}\x00\r\x00', '\x00F\x00u\x00l\x00l\x00C\x00r\x00a\x00w\x00l\x00L\x00i\x00s\
x00t\x00 \x00=\x00 \x00{\x00 \x00\r\x00', '\x00A\x00l\x00w\x00a\x00y\x00s\x00A\x
00u\x00t\x00h\x00L\x00i\x00s\x00t\x00 \x00=\x00 \x00{\x00 \x00\r\x00', '\x00 \x0
0 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x0
0 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00}\x00\r\x00', '\x00P\x00r\x00o\x00t\x00
e\x00c\x00t\x00i\x00o\x00n\x00R\x00u\x00l\x00e\x00s\x00 \x00=\x00 \x00{\x00 \x00
\r\x00', '\x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00
\x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00}\x00\r\x00', '\x00M\x00a\
x00n\x00g\x00l\x00i\x00n\x00g\x00B\x00y\x00p\x00a\x00s\x00s\x00L\x00i\x00s\x00t\
x00 \x00=\x00 \x00{\x00 \x00\r\x00']
下面是我的代码:
file1 = set(line.strip() for line in open(r'C:\Users\Administrator\Desktop\abc.txt'))
file2 = set(line.strip() for line in pen(r'C:\Users\Administrator\Desktop\abc1.txt'))
diff_list=[]
for line in file1:
if line not in (file1 & file2):
diff_list.append(line.strip())
print diff_list
答案 0 :(得分:2)
使用file1.symmetric_difference(file2)
获取包含file1
或file2
中元素的新集,但不能同时使用这两个元素。
使用set.symmetric_difference(t),您可以传递任何可迭代的内容,因此您无需创建第二个集合。
答案 1 :(得分:1)
在python中,Set实现了Set理论的有用函数,如union,difference和disjunction,下面的代码计算了不常见的行
uncommon_lines = file1.union(file2) - (file1 & file2)