Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中将csv文件转换为管道分隔文件_Python_Csv - Fatal编程技术网

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

在Python中将csv文件转换为管道分隔文件,python,csv,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(ope

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

如何将其写入以管道分隔的文件?

https://docs.python.org/2/library/csv.html
用于Python 2.x
https://docs.python.org/3.3/library/csv.html
用于Python 3.x

这些页面介绍如何使用csv.writer

如果不进行测试,代码看起来在语法上是有效的。
您需要做的就是添加一些
c.writerow('data','here')
来写入数据。

这就是我认为您想要的:

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)
适应Python 3

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)

添加换行符参数是为了防止出现这种情况。

我找到了一种快速方法,可以将逗号分隔符更改为带有熊猫的管道。当我使用“|”作为分隔符将数据帧转换为csv时:

df.to_csv(fileName, sep="|")

我对
csv
模块没有太多经验,因此如果这些解决方案不能互换,那么可能需要有人插话。但这对我来说出人意料的好

您可以使用pandas实现csv到管道分隔(或所需分隔)文件的转换


相关:@martineau上述代码在Python2.6中不起作用,您应该提到python版本。它将显示打开两个这样的文件的语法错误。如果可能的话,请提供2.6的解决方案。@cyborg:只需用语句嵌套(缩进)第二个
,然后在第一个语句中嵌套(缩进)第二个
。显然,直到Python2.7.1在Python3.6.4中返回一个错误时,才添加了多个上下文表达式:
\u csv.error:迭代器应该返回字符串,而不是字节(您是否以文本模式打开了文件?
@StevenVascellaro:这段代码是为Python2.x编写的,因此没有像Python3那样打开文件(如Py3
csv
模块所示)。@Steven:两个文件的打开方式应与链接的Python 3 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