Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python CSV模块能否使用多字符分隔符解析文件?_Python_Csv - Fatal编程技术网

Python CSV模块能否使用多字符分隔符解析文件?

Python CSV模块能否使用多字符分隔符解析文件?,python,csv,Python,Csv,我有一个使用多字符分隔符的“CSV”文件,因此数据看起来像 field1_|#|_field2_|#|_field3_|#|_field4 有没有办法使用Python CSV模块来解析此文件?尝试用singlechar分隔符替换multichar分隔符 像这样的事情: class DelimitedFile: def __init__(self, fname, mode='rb', ind=',', outd=','): self.f = open(fname, mode)

我有一个使用多字符分隔符的“CSV”文件,因此数据看起来像

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

有没有办法使用Python CSV模块来解析此文件?

尝试用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

Python的csv模块无法处理多个字符的分隔符,因此“Python csv模块能否使用多列分隔符解析文件?”的简短回答是“否”。一项简单的测试证实了这一点:

reader = csv.reader(open('test.csv'), delimiter = '|#|')
导致此错误的原因:

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

(test.csv是一个带有分隔符的两行文件,如代码所示。)


因此,您需要按照@alexblum的建议,将分隔符替换为单字符分隔符,编写自己的解析器,或者找到不同的解析器。谷歌搜索“python csv多字符分隔符”找到了一些点击率。

相关:使用pandas
pd.read\u csv(file.csv,sep='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'',engine='Pythong')
。谢谢,Alex,我会给你一个提示shot@zenzic:如果这个答案解决了问题,请接受它。看见