如何从csv文件中删除换行符

时间:2016-09-12 09:57:22

标签: python excel csv

我有以下部分代码从csv文件“prom output.csv”中读取值,并将它们编写为新的“sorted output.csv”。

import collections
import csv

with open("prom output.csv","r") as f:
    cr = csv.reader(f,delimiter=",")
    d=collections.defaultdict(lambda : list())
    header=next(cr)   
    for r in cr:
        d[r[0]].append(r[1])  


with open("sorted output.csv","w") as f:
    cr = csv.writer(f,delimiter=",")
    cr.writerow(header)  
    od = collections.OrderedDict(sorted(d.items()))
    for k,v in od.items():  s
        cr.writerow([k,",".join(v)]) 

然而输出(见下文)每行之间有空格,我想删除它们。有人可以帮忙吗?

enter image description here

输入文件“prom output.csv”在每一行之间没有空格,如下所示

enter image description here

作为最后的中间化,我希望我的输出看起来像:

enter image description here

有什么建议吗?

4 个答案:

答案 0 :(得分:0)

显然改变了这一行:cr = csv.writer(f,lineterminator='\n')  into:cr = csv.writer(f,sys.stdout, lineterminator='\n')并在导入中添加import sys解决了问题。

答案 1 :(得分:0)

这是一个简单可行的解决方案:

import collections
import csv

with open('prom output.csv') as f:
    header = next(csv.reader(f))
    d = collections.OrderedDict()
    for r in csv.reader(f):
        try:
            d[r[0]] += ','+r[1]
        except:
            d[r[0]] = ','+r[1]

with open('sorted output.csv', 'w') as f:
    cw = csv.writer(f)
    cw.writerow(header)
    for k, v in d.items():
        f.write(k+v+'\n')

输入以下CSV文件(prom output.csv):

case,event,startTime,completeTime
101,A
101,B
101,Y
102,C
102,D
102,U
103,A
103,B
103,Y

输出为(sorted output.csv):

case,event,startTime,completeTime
101,A,B,Y
102,C,D,U
103,A,B,Y

您想要的输出是什么。

答案 2 :(得分:0)

更改

cr = csv.writer(f,delimiter=",")

cr = csv.writer(f,delimiter=",", lineterminator='\n')

可以解决问题。

我尝试过cr = csv.writer(f, lineterminator='\n'),但仍然可以使用。

答案 3 :(得分:-1)

Python换行符是' \ n'。因此,要从字符串中删除换行符(以及因此打印的空白行),请尝试:

cr.writerow([k, (",".join(v)), .strip("\n")])