我的函数读取的文件格式为:
Column1 Column2 Column3 Column4
Value2 Value1 Value4 Value3
Value7 Value6 Value5 Value8
Value9 Value10 Value11 Value12
我读了文件,过滤并对其进行排序,并留下了格式列表列表:
lines = [[Column1, Column2, Column3, Column4], [Value1, Value2, Value3, Value4], [Value5, Value6, Value7, Value8]]
现在,当我尝试写入文件(格式与原始文件相同)时,我无法正确格式化输出。这是我的代码:
for line in lines:
outfile.write(line[0].strip()+'\t')
outfile.write(line[1].strip()+'\t')
outfile.write(line[2].strip()+'\t')
outfile.write(line[3].strip()+'\t')
如果我将其更改为outfile.write(line[0].strip()+'\t'+'\n')
或添加outfile.write('\n')
,我的文件只是一个包含所有值的大列。
答案 0 :(得分:1)
您需要string.join(list)
函数,该函数连接list
的元素,将它们分隔为string
。所以你需要"\t".join(x.strip() for x in line)
。但是这并不能在每个字符串的末尾给你换行。然后,您可以按照以下方式添加换行符:"\t".join(x.strip() for x in line) + "\n"
如果你想一起做所有的行,你可以把它"\n".join('\t'.join(x.strip() for x in line) for line in lines)
此外,如果您使用print >>outfile, string
语法,则可以在每行后自动获取换行符:
for line in lines:
print >>outfile, '\t'.join(x.strip() for x in line)
答案 1 :(得分:1)
以下代码对我有用,我看到的问题是你在写完一行后没有添加换行符。
>>> with open('fileName', 'w') as outFile:
for line in lines:
for elem in line:
outFile.write(elem.strip()+'\t')
outFile.write('\n')
这给了我一个类似下面的输出
Column1 Column2 Column3 Column4
Value1 Value2 Value3 Value4
Value5 Value6 Value7 Value8
代表
>>> lines = [['Column1', 'Column2', 'Column3', 'Column4'], ['Value1', 'Value2', 'Value3', 'Value4'], ['Value5', 'Value6', 'Value7', 'Value8']]
编辑 - 要获得您正在寻找的输出,请使用
>>> with open('fileName', 'w') as outFile:
for line in lines:
outFile.write("\t".join([elem.strip() for elem in line]))
outFile.write('\n')
答案 2 :(得分:0)
这些答案都很好。 但是我建议使用csv.reader和csv.writter