Python csv.reader用逗号分隔项目,但忽略双引号中的项目



我正试图使用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']]

最新更新