我有一个使用多列分隔符的“CSV”文件,因此数据类似于
field1_|#|_field2_|#|_field3_|#|_field4
有没有办法使用Python CSV模块解析这个文件?
由于
答案 0 :(得分:5)
尝试用singlechar替换multichar定界符。
某些人喜欢这样: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
答案 1 :(得分:1)
Python的csv模块无法处理多个字符的分隔符,因此简单回答“Python CSV模块可以解析具有多列分隔符的文件吗?”没有”。一个简单的测试证实了这一点:
reader = csv.reader(open('test.csv'), delimiter = '|#|')
导致此错误:
TypeError:“delimiter”必须是1个字符的字符串
(test.csv是一个带有分隔符的2行文件,如代码所示。)
因此,你需要用@alexblum建议的单字符分隔符替换分隔符,编写自己的解析器,或者找到不同的解析器。谷歌搜索'python csv多字符分隔符'出现了一些点击。