我有两个XLSX文件需要合并。它们都是Excel2010文件(.xlsx),我所读到的是空格分隔(我愿意更正)。这两个文件都有相同的行数,行将对齐;例如,row1、file1将对应于row1、文件2等。这些文件有很长的字段,所以为了简单起见,我将只显示模拟数据。第一个文件的格式如下:
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\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() 发布于 2014-12-01 14:49:54
假设所有文件都以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。https://stackoverflow.com/questions/27228552
复制相似问题