CSV模块能解析多字符分隔符的文件吗?
我有一个“CSV”文件,它使用了多个字符作为分隔符,所以里面的数据看起来像这样:
field1_|#|_field2_|#|_field3_|#|_field4
有没有办法用Python的CSV模块来解析这个文件呢?
2 个回答
1
Python的csv模块不能处理超过一个字符的分隔符,所以对于“Python的CSV模块能解析带有多列分隔符的文件吗?”这个问题,简单的回答就是“不可以”。一个简单的测试证实了这一点:
reader = csv.reader(open('test.csv'), delimiter = '|#|')
结果出现了这个错误:
TypeError: "delimiter" 必须是一个字符的字符串
(test.csv是一个有两行的文件,分隔符如代码所示。)
所以你要么需要把分隔符换成单个字符的分隔符,就像@alexblum建议的那样,要么自己写一个解析器,或者找一个不同的解析器。用谷歌搜索“python csv 多字符分隔符”可以找到一些相关的内容。
6
试着把多个字符的分隔符换成一个字符的分隔符。
可以这样做:
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