我想用Python将逗号分隔的CSV文件转换为管道分隔文件:
我正在阅读我的csv文件:
with open('C://Path//InputFile.csv') as fOpen:
reader = csv.DictReader(fOpen)
for row in reader:
for (k, v) in row.items():
columns[k].append(v)
c = csv.writer(open("C://Path//OutputFile.txt","wb"), delimiter="|")
如何将其写为管道分隔文件?
答案 0 :(得分:5)
这就是我想你想要的:
import csv
with open('C:/Path/InputFile.csv', 'rb') as fin, \
open('C:/Path/OutputFile.txt', 'wb') as fout:
reader = csv.DictReader(fin)
writer = csv.DictWriter(fout, reader.fieldnames, delimiter='|')
writer.writeheader()
writer.writerows(reader)
答案 1 :(得分:2)
为Python 3适应martineau's answer。
import csv
with open('C:/Path/InputFile.csv') as fin:
with open('C:/Path/OutputFile.txt', 'w', newline='') as fout:
reader = csv.DictReader(fin, delimiter=',')
writer = csv.DictWriter(fout, reader.fieldnames, delimiter='|')
writer.writeheader()
writer.writerows(reader)
添加了newline参数是为了防止newline issues on Windows systems。
答案 2 :(得分:1)
我找到了一种将逗号分隔符更改为带有熊猫管的快速方法。当我使用“ |”将数据框转换为csv时作为分隔符:
df.to_csv(fileName, sep="|")
我对csv
模块没有太多的经验,因此,如果这些解决方案不能互换,那么可能有人会插话。但这对我来说出奇的好。
答案 3 :(得分:0)
您可以使用pandas来实现csv到竖线分隔(或所需分隔)文件的转换。
import pandas as pd
df = pd.read_csv(r'C:\Users\gupta\Documents\inputfile.csv') #read inputfile in a dataframe
df.to_csv(r'C:\Users\gupta\Desktop\outputfile.txt', sep = '|', index=False) #write dataframe df to the outputfile with pipe delimited
答案 4 :(得分:-1)
https://docs.python.org/2/library/csv.html
Python 3.x的https://docs.python.org/3.3/library/csv.html
这些页面解释了如何使用csv.writer。
不测试它,您的代码看起来语法有效。
您需要做的就是添加一些c.writerow('data','here')
来编写数据。