python列表包含十六进制值

时间:2014-06-12 09:07:48

标签: python list file

我试图从文件中找到不常见的行。

如果我执行“打印行”,我会获得行,而如果我尝试将每行推到列出“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

2 个答案:

答案 0 :(得分:2)

使用file1.symmetric_difference(file2)获取包含file1file2中元素的新集,但不能同时使用这两个元素。

使用set.symmetric_difference(t),您可以传递任何可迭代的内容,因此您无需创建第二个集合。

答案 1 :(得分:1)

在python中,Set实现了Set理论的有用函数,如union,difference和disjunction,下面的代码计算了不常见的行

uncommon_lines = file1.union(file2) - (file1 & file2)