我有两个需要合并的XLSX文件。它们都是Excel 2010文件(.xlsx),我读过的是空格分隔(我可以修正)。两个文件的行数相同,行排成一行;例如row1,file1将对应于row1,file2等...文件有很长的字段,所以我只是为了简单起见而显示模拟数据。第一个文件的格式为:
a 123 20 20141201
b 456 50 20141130
.....
第二个文件的格式为:
20141201
20141130
...
因此我希望输出为:
a 123 20 20141201 20141201
b 456 50 20141130 20141130
...
我的代码如下,但似乎有两个问题:
首先,array3的输出格式不正确:
'a 123 20 20141201 \t\r\n', '20141201\n',
'b 456 50 20141130 \t\r\n', '20141130\n',
....
如何正确连接这些以确保其他日期戳位于制表符,换行符等之前......(\ t \ r \ n)?
其次,当我将此数组写入输出文件时,行是不一致的:
第一行包含1列中的所有内容(注意☺=白色方形符号,不确定为什么它会显示为笑脸?):
col1 col2 col3 col4 col5
row1|a ☺ 123 ☺ 20 ☺ 20141201 ☺☺ 20141201
row2|b 456 50 20141130
row3|20141130
row4|c .........................
我的代码在这里:
ins1 = open( "file1.xlsx", "r" )
array1 = []
for line in ins1:
array1.append(line)
ins1.close()
ins2 = open( "file2.xlsx", "r" )
array2 = []
for line in ins2:
array2.append(line)
ins2.close()
array3 = []
for i in range(0, len(array1)):
array3.append(array1[i])
array3.append(array2[i])
resultFile = open("output.xlsx",'wb')
wr = csv.writer(resultFile)
print array3
wr.writerow(array3)
resultFile.close()
抱歉,我是Python的新手,所以上面的内容可能不是最好的方法。我愿意接受有关如何解决这个问题的其他建议。我已经看过Pandas,我相信这会使这项任务变得更加容易,但不幸的是我无法安装外部库来排除这个选项。非常感谢任何帮助。
编辑: 基于Serge的答案,这是一个有效的解决方案:
ins1 = open( "file1.xlsx", "r" )
ins2 = open( "file2.xlsx", "r" )
outs = open("output.xlsx",'wb')
for line in ins1:
line = line.rstrip() + "\t" + next(ins2)
print line.rstrip()
outs.write(line)
ins1.close()
ins2.close()
outs.close()
答案 0 :(得分:0)
假设您的所有文件都是用空格分隔的csv格式,以下简化代码就足够了:
with open( "file1.xlsx", "r" ) as ins1, open( "file2.xlsx", "r" ) as ins2, \
open("output.xlsx",'wb') as resultfile :
for line in ins1:
line = line.rstrip() + " " + next(ins2)
print line.rstrip()
resultfile.write(line)
说明:
with
确保文件正常关闭,无论代码中发生什么,output