Python CSV模块可以解析具有多列分隔符的文件

时间:2011-08-10 14:26:56

标签: python csv

我有一个使用多列分隔符的“CSV”文件,因此数据类似于

field1_|#|_field2_|#|_field3_|#|_field4

有没有办法使用Python CSV模块解析这个文件?

由于

2 个答案:

答案 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多字符分隔符'出现了一些点击。