CSV模块能够解析具有多个字符分隔符的文件吗?

7
我有一个使用多个字符分隔符的“CSV”文件,因此数据看起来像这样:
field1_|#|_field2_|#|_field3_|#|_field4

有没有一种使用Python CSV模块解析此文件的方法?

1
使用pandas库的pd.read_csv(file.csv, sep='\|#\|', engine='python')函数。 - Quang Hoang
2个回答

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

1

Python的csv模块无法处理超过一个字符的分隔符,因此对于“Python CSV模块能否解析具有多列分隔符的文件?”的简短回答是“不行”。一个简单的测试证实了这一点:

reader = csv.reader(open('test.csv'), delimiter = '|#|')

这导致了以下错误:

TypeError:“分隔符”必须是一个字符的字符串

(test.csv是一个包含两行的文件,其中分隔符如代码所示。)

因此,您需要将分隔符替换为单个字符分隔符,如@alexblum建议的那样,编写自己的解析器或查找不同的解析器。在Google上搜索“python csv多字符分隔符”会出现一些结果。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接