我试图过滤输入文件,并将过滤后的行写入“筛选”文件,将未过滤的行写入“保存”文件,但我似乎无法解决我的格式化问题。
在创建一组过滤器之后..。
with inFile:
file_reader = csv.reader(inFile, delimiter='\t')
filtered_name = inFile.name + '_filtered.txt'
filtered_writer = csv.writer(open(filtered_name,'wb'), delimiter='\t')
saved_name = inFile.name + '_saved.txt'
saved_writer = csv.writer(open(saved_name, 'wb'), delimiter='\t')
for data in file_reader:
if (data[1], data[2]) in filters:
filtered_writer.writerows(data)
else:
saved_writer.writerows(data) 过滤步骤正常工作,如果只写入单个输出文件,则输出看起来很好。通常,输出文件应该如下所示:
ABC 12345 6789
DEF 12346 6790但它们看起来却是:
A B C
1 2 3 4 5
6 7 8 9
D E F
1 2 3 4 6
6 7 9 0我做错了什么?
编辑:我使用Python2.7
发布于 2014-06-02 15:15:45
我认为您希望使用writerow (而不是复数),因为每次只输出一行,对吗?
writerows将data解释为列表(实际上是),但实际上是字符串列表(字符串可以解释为字符列表)。因此,它将每个字符串拆分成一个字符列表,并在每列输出一个字符。
https://stackoverflow.com/questions/23997382
复制相似问题