我有一个使用多个字符分隔符的“CSV”文件,因此数据看起来像这样:
有没有一种使用Python CSV模块解析此文件的方法?
field1_|#|_field2_|#|_field3_|#|_field4
有没有一种使用Python CSV模块解析此文件的方法?
class DelimitedFile:
def __init__(self, fname, mode='rb', ind=',', outd=','):
self.f = open(fname, mode)
self.ind = ind
self.outd = outd
def __iter__(self):
return self
def next(self):
line = self.f.next()
return line.replace(self.ind, self.outd)
使用方法如下:
import csv
delimiter = ','
reader = csv.reader(DelimitedFile(fileName, ind='_|#|_', outd=delimiter))
for row in reader:
print row
Python的csv模块无法处理超过一个字符的分隔符,因此对于“Python CSV模块能否解析具有多列分隔符的文件?”的简短回答是“不行”。一个简单的测试证实了这一点:
reader = csv.reader(open('test.csv'), delimiter = '|#|')
这导致了以下错误:
TypeError:“分隔符”必须是一个字符的字符串
(test.csv是一个包含两行的文件,其中分隔符如代码所示。)
因此,您需要将分隔符替换为单个字符分隔符,如@alexblum建议的那样,编写自己的解析器或查找不同的解析器。在Google上搜索“python csv多字符分隔符”会出现一些结果。
pd.read_csv(file.csv, sep='\|#\|', engine='python')
函数。 - Quang Hoang