2016-09-14 140 views
1

我正在处理协调加载文件,并且必须编辑它们,因此我正在使用Python。这些列由pilcrow char 分隔,并且具有作为quotechar的þPython csv阅读器多字符quotechar?

问题是quotechar,python中的csv模块只接受单字符引用(当我编写csv文件时没有问题)。

问题:如何在Python中读取一个CSV文件,其中quotechar是多字符?该CSV FLE的

实施例:

þcol_1þ¶þcol_2þ¶þcol_3þ¶þcol_4þ 
+2

你可以升级到Python 3吗? 'csv'模块在2和3中使用'str'类型,而在Python 3中,完全可以识别Unicode,''只是一个代码点。 –

+2

其实,这个文件使用了什么* encoding *?只有当文件使用多字节编码(像UTF-8这样的变量或像UTF-16这样的固定变量),Python 2才会出现问题。如果这是用CP1252等* 8位编码*完成的,那么你需要使用的是''\ xb6''和''\ xfe''。 –

+0

Python 3是最干净的解决方案。 –

回答

3

索引文件格式是8位编码,该þ字符在Latin-1的编码的,真的。这意味着它们分别被编码为二进制值0xB6和0xFE。

Python的2 csv模块接受这些字节相当愉快:

csv.reader(fileobj, delimiter='\xb6', quotechar='\xfe') 

像往常一样为csv模块,确保以二进制方式打开文件离开换行处理的模块。

在Python 3中,打开newline=''encoding='latin1'在文本模式下的文件,无论是使用上面的\xhh逃逸或实际字符,所以delimiter='¶', quotechar='þ'