我有以下部分代码从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)])
然而输出(见下文)每行之间有空格,我想删除它们。有人可以帮忙吗?
输入文件“prom output.csv”在每一行之间没有空格,如下所示
作为最后的中间化,我希望我的输出看起来像:
有什么建议吗?
答案 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")])