我正试图使用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']
换言之,它在不应该的时候将一些项目(比如作者的姓氏和名字)分开。我遵循了其他链接中的提示,但似乎我也错过了其他内容。
如果"
在项目的开头,它就会工作:
"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']]