2015-12-21 146 views
0

我試圖用csv.reader創建一個字符串項目列表,但我遇到了麻煩。舉例來說,我有以下字符串:Python csv.reader用逗號分隔項目,但忽略雙引號內的對象

bibinfo = "wooldridge1999asymptotic, author = \"Wooldridge, Jeffrey M.\", title = \"Asymptotic Properties of Weighted M-Estimators for Variable Probability Samples\", journal = \"Econometrica\", volume = \"\", year = 1999" 

我運行下面的代碼:但

import csv 
from io import StringIO 
bibitems = [bibitem for bibitem in csv.reader(StringIO(bibinfo), skipinitialspace = True)][0] 

而不是其中一對雙引號內的逗號不被視爲一個列表分離器,我得到下面的(不必要的)結果:

['wooldridge1999asymptotic', 'author = "Wooldridge', 'Jeffrey M."', 'title = "Asymptotic Properties of Weighted M-Estimators for Variable Probability Samples"', 'journal = "Econometrica"', 'volume = ""', 'year = 1999'] 

換句話說,它分隔一些項目(如作者從名字姓),當它不應該。我跟着其他link的提示,但似乎我也錯過了其他的東西。

回答

0

它的工作原理,如果"是在項目的開始:

"author = Wooldridge, Jeffrey M." 

隨着更改的文本:

>>> s = """wooldridge1999asymptotic, "author = Wooldridge, Jeffrey M.", title = "Asymptotic Properties of Weighted M-Estimators for Variable Probability Samples", journal = "Econometrica", volume = "", year = 1999""" 
>>> list(csv.reader(s.splitlines(), skipinitialspace=True)) 
[['wooldridge1999asymptotic', 
    'author = Wooldridge, Jeffrey M.', 
    'title = "Asymptotic Properties of Weighted M-Estimators for Variable Probability Samples"', 
    'journal = "Econometrica"', 
    'volume = ""', 
    'year = 1999']] 
+0

嗨,邁克。謝謝回覆。 問題是引號應該保留在作者姓名的周圍。 (這是一個BibTeX數據,我從一個將BibTeX轉換爲引用的網站的正則表達式中獲得)。因此,我需要一種能夠以數據處理方式處理數據的解決方案。不管怎麼說,還是要謝謝你。 – DS81

相關問題