2013-10-22 148 views
2

在大陸的歐洲,csv文件通過分號分隔,因爲數字中有數字,而不是。所以,我試圖寫一個semicolonSeparatedList與commaSeparatedList相同,但是;而不是,:pyparsing使用分號而不是逗號分析csv文件

_semicolonsepitem = Combine(OneOrMore(Word(printables, excludeChars=';') + 
          Optional(Word(" \t") + 
             ~Literal(";") + ~LineEnd()))).streamline().setName("semicolonItem") 
semicolonSeparatedList = delimitedList(Optional(quotedString.copy() | _semicolonsepitem, default="")).setName("semicolonSeparatedList") 

然而解析:

Name;Ref;Address 

結果

['Name'] 

,而不是

['Name', 'Ref', 'Address'] 

誰能幫助?

謝謝 丹

找到了答案: 看來我已經找到它:

semicolonSeparatedList = delimitedList( 
     Optional(quotedString.copy() | _semicolonsepitem, default=""), 
     delim=';').setName("semicolonSeparatedList") 

我加demim = ';'也分隔列表。

感謝,丹

+0

很高興你能解決這個問題 - 我希望pyparsing在你的Python工具包中找到一席之地。 – PaulMcG

回答

4

你試過從蟒蛇的csv module

在那裏,您可以很容易地指定分隔符。 Birei的評論後

import csv 
with open('eggs.csv', 'rb') as csvfile: 
    spamreader = csv.reader(csvfile, delimiter=' ', quotechar='|') 

編輯:我只是把從文檔蟒蛇頁例如,你可以輸入任何你想爲CSV讀者分隔符:
'
「」
‘;’
'a'

+0

我想'分隔符'中有一個錯字。這是一個分號。 – Birei

+0

csv模塊有問題,我無法解決。它並不適用於「」和「」價值作爲報價,用戶傾向於做像奧尼爾或「secon'time」或「tag1」這樣的東西,它需要與所有人一起工作。這就是爲什麼我選擇pyparser,因爲它與所有人一起工作。 –