2011-08-10 59 views
6

我有一個使用多列分隔符「CSV」文件,這樣的數據看起來就像多列Python的CSV模塊解析文件可以定界符

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

有沒有辦法使用的一種方式Python CSV模塊來解析這個文件?

感謝

+1

相關:[如何使用python csv模塊分割雙管道分隔數據](http://stackoverflow.com/questions/6352409/how-to-use-python-csv-module-for-splitting-double- pipe-delimited-data) –

回答

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 
+0

謝謝,Alex,我會給你一個鏡頭 – zenzic

1

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多字符分隔符'出現了幾個點擊。