【问题标题】:formatting issues with multiple csv.writers多个 csv.writers 的格式问题
【发布时间】:2014-06-02 23:15:45
【问题描述】:

我正在尝试过滤输入文件并将过滤后的行写入“过滤”文件,将未过滤的行写入“保存”文件,但我似乎无法解决我的格式问题

创建一组过滤器后...

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

我做错了什么?

编辑:我使用的是 Python 2.7

【问题讨论】:

  • 天哪。它应该是“writerow”而不是“writerows”……大家星期一快乐!是时候喝咖啡了……

标签: python csv filtering


【解决方案1】:

我认为您想使用writerow(不是复数),因为您一次只输出一行,对吗?

writerowsdata 解释为列表列表(它是),但它实际上是字符串列表(字符串可以解释为字符列表)。因此,它将每个字符串拆分为一个字符列表,并每列输出一个字符。

【讨论】:

  • 谢谢,见上文。是时候喝杯咖啡,散散心了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多