Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python将两个文本文件与字典相结合-列数不一致_Python_File_Text - Fatal编程技术网

Python将两个文本文件与字典相结合-列数不一致

Python将两个文本文件与字典相结合-列数不一致,python,file,text,Python,File,Text,我有两个文本文件,我需要结合使用一个共同的关键,两者都有。我可以将它们都读入python词典,但仍然有一个重大问题。例如: 文件-1: 文件-2: 我想知道: Sample Criteria1 Criteria2 Criteria3 Criteria4 Criteria5 Criteria6 Date Sample Metric2 Metric3 Metric4 Metric5 A 1 5 98 3

我有两个文本文件,我需要结合使用一个共同的关键,两者都有。我可以将它们都读入python词典,但仍然有一个重大问题。例如:

文件-1:

文件-2:

我想知道:

Sample Criteria1 Criteria2 Criteria3 Criteria4 Criteria5 Criteria6 Date   Sample Metric2 Metric3 Metric4 Metric5
    A      1         5                   98        3               9      A      5               98      3
    B      2         4         56        12                  34    8      B      4       56      12
    C      3                   99        45        33              2      C              99      45
这是我的代码:

project = open(sys.argv[1], "rb")
table = open(sys.argv[2], "rb")
outfile = open(sys.argv[3], "w")

projectdict = {}

for line in project:
    parts = line.strip().split("\t")
    projectdict[str(parts[1])] = line.strip().split("\t")

tabledict = {}

for line in table:
    parts = line.strip().split("\t")
    tabledict[str(parts[0])] = line.strip().split("\t")

for key in tabledict:
    outfile.write(key + "\t" + str(tabledict[key]) + "\t" + str(projectdict[key]) + "\n")

project.close()
table.close()
outfile.close()
我得到的是:

    9      A      5               98      3    9         A         5      98     3
    8      B      4       56      12      8    B         4         56     12
    2      C              99      45      2    C         99        45
单词Sample也会导致一条keyrerror消息,因此我也不会在输出中获得我的列标题

我曾希望使用字典可以避免这个问题


感谢您的帮助。

事实上,输出与发布略有不同,因为文件1的内容先是文件1的内容,然后是文件2的内容,但总体思路是不保留空字段。如果这是文本文件,可能不需要所有str函数,也不需要“rb”只是r或rU。您正在将整行作为一个条目加载,其中包含行中第二个元素的键?对于测试,只需打印输出,而不是写入文件。对字典的最后一次调用只使用tabledict键的最后一个值?这在projectdict中不存在,因为您使用了字段1而不是0。。。这里的逻辑问题!
project = open(sys.argv[1], "rb")
table = open(sys.argv[2], "rb")
outfile = open(sys.argv[3], "w")

projectdict = {}

for line in project:
    parts = line.strip().split("\t")
    projectdict[str(parts[1])] = line.strip().split("\t")

tabledict = {}

for line in table:
    parts = line.strip().split("\t")
    tabledict[str(parts[0])] = line.strip().split("\t")

for key in tabledict:
    outfile.write(key + "\t" + str(tabledict[key]) + "\t" + str(projectdict[key]) + "\n")

project.close()
table.close()
outfile.close()
    9      A      5               98      3    9         A         5      98     3
    8      B      4       56      12      8    B         4         56     12
    2      C              99      45      2    C         99        45