在Python中将csv文件转换为管道分隔文件

时间:2014-12-18 16:33:27

标签: python csv

我想用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="|")

如何将其写为管道分隔文件?

5 个答案:

答案 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)

Python 2.x的

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')来编写数据。