我有一個使用多列分隔符「CSV」文件,這樣的數據看起來就像多列Python的CSV模塊解析文件可以定界符
field1_|#|_field2_|#|_field3_|#|_field4
有沒有辦法使用的一種方式Python CSV模塊來解析這個文件?
感謝
我有一個使用多列分隔符「CSV」文件,這樣的數據看起來就像多列Python的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
謝謝,Alex,我會給你一個鏡頭 – zenzic
Python的CSV模塊無法處理多個字符的分隔符,所以短期的回答爲「可以Python的CSV模塊用多列分隔符解析文件?「沒有」。一個簡單的測試證實了這一點:
reader = csv.reader(open('test.csv'), delimiter = '|#|')
這就造成了這樣的錯誤:
TypeError: "delimiter" must be an 1-character string
(test.csv是帶分隔符2排文件,如在代碼中。)
因此你我們需要用@alexblum建議的單個字符分隔符來替換你的分隔符,編寫你自己的分析器,或者找到一個不同的分析器。谷歌搜索'python csv多字符分隔符'出現了幾個點擊。
相關:[如何使用python csv模塊分割雙管道分隔數據](http://stackoverflow.com/questions/6352409/how-to-use-python-csv-module-for-splitting-double- pipe-delimited-data) –