【问题标题】:Comparing two tuples in two different file比较两个不同文件中的两个元组
【发布时间】:2013-07-06 10:25:34
【问题描述】:

我有两个包含元组的文本文件。我正在尝试将每一行与 ID 匹配(基本上第一个元素是 ID)。数据如下:

Input_file_1.txt: 
('126871', 'footest', 'lolo')
('193590', 'nono', 'koko')


Input_file_2.txt: 
('126871', 'mmomo', 'qqlqlqlq')
('193591', 'Severfdfae', 'cofade complet ')



Result_file.txt
('126871', 'mmomo', 'qqlqlqlq')

第一个问题是如何比较两个元组。任何建议或代码示例将不胜感激。谢谢。

【问题讨论】:

  • 你有没有尝试过?
  • 是的,问题正在更新。
  • 它将包含多少个元组?只有两个,还是更多?
  • 还有很多,我已经逐行阅读了

标签: python tuples


【解决方案1】:

要从文件中读取,您可以这样做:

with open('Input_file_1.txt', 'r') as myfile1:
    tuples1 = myfile1.readlines()

with open('Input_file_2.txt', 'r') as myfile2:
    tuples2 = myfile2.readlines()

但是由于这些返回字符串,您必须调用 ast.literal_eval 将它们转换为元组:

import ast
tuples1 = map(ast.literal_eval, tuples1)
tuples2 = map(ast.literal_eval, tuples2)

那么简单:

for tuple2 in tuples2:
    for tuple1 in tuples1:
        if tuple1[0] == tuple2[0]:
            print tuple2

哪些打印:

('126871', 'mmomo', 'qqlqlqlq')

【讨论】:

  • 您能否解释一下代码的第二部分:map(ast.literal_eval, tuples1) 以及您在 for 循环中执行第三部分 for 循环的方式。很少有额外的评论会非常有帮助。谢谢。
  • map(ast.literal_eval, tuples1) 等同于[ast.literal_eval(i) for i in tuples1]
  • @user2412714 for 循环?我们遍历所有元组,如果 ID 与另一个元组中的 ID 匹配,我们打印它匹配的元组
猜你喜欢
  • 2015-10-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多