【问题标题】:Python compare 3 text files and append to the original [closed]Python比较3个文本文件并附加到原始文件[关闭]
【发布时间】:2017-09-27 19:52:17
【问题描述】:

我想在多个文本文件之间建立关系,使用 python 合并为一个。您可以看到两个文本文件中的 3-5 个字符是相同的。我想获得匹配的第三和第四列并添加到文件一的末尾。这些是逗号分隔的文本文件。

文件 1

03**005**001,NAME,573.641235,0

03**022**001,NAME,-4.740656,58

03**023**001,NAME,-750,32

03**024**001,NAME,-1.937901,51

03**025**001,NAME,-1.327531,0

文件 2

01**005**001,Name,1,0

01**022**001,Name,0,7

01**023**001,Name,0,21

01**024**001,Name,0,12

01**025**001,Name,0,0

输出.txt

03**005**001,NAME,573.641235,0,1,0

03**022**001,NAME,-4.740656,58,0,7

【问题讨论】:

  • 下面是做我想做的,我只需要稍微说明一下如何使用它。它以 2:5 获取文件 1 字符并将其与文件 2 字符 2:5 进行比较。然后我想输出与文件 1 中所有列的匹配,文件 2 列索引 2 和 3 附加到文件 1 中所有列的末尾。

标签: python csv text


【解决方案1】:

试试这个脚本:

# compare.py
oneDict = {}
twoDict = {}

with open("file1.txt", "r") as one:
    for line in one:
        cells = line.split(",")
        oneDict[cells[0][2:5]] = cells

with open("file2.txt", "r") as two:
    for line in two:
        cells = line.split(",")
        twoDict[cells[0][2:5]] = cells

for match in set(oneDict.keys()).intersection(set(twoDict.keys())):
    oneRow = oneDict[match]
    twoRow = twoDict[match]
    print(oneDict[match][0],
          oneDict[match][1],
          oneDict[match][2],
          oneDict[match][3][:-1],
          twoDict[match][2],
          twoDict[match][3][:-1],
          sep=",")

还有这个命令:

python compare.py > output.txt

【讨论】:

  • 所以我得到了第一场比赛,但它没有遍历其余的记录。我不能使用缩进的打印语句,它告诉我 oneDict[match][1] 索引超出范围。如果我在没有缩进的情况下运行,它会给我打印语句中的第一条记录。如果我只看 oneDict[match][0] 它将遍历所有内容,但只给我 ID。
  • 没关系,我在文件末尾有一些空格。
猜你喜欢
  • 1970-01-01
  • 2022-01-03
  • 1970-01-01
  • 2015-01-28
  • 2016-08-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多