为什么解析csv文件不会破坏它们的"逻辑"顺序?

use*_*852 1 python python-2.7

我正在尝试使用内置的python csv阅读器解析csv文件,如下所示:

sms_prices_list_url = "http://www.twilio.com/resources/rates/international-sms-rates.csv"
sms_prices_list = requests.get(sms_prices_list_url)
reader = csv.reader(sms_prices_list.text)
for row in reader:
    print row
Run Code Online (Sandbox Code Playgroud)

但是,当我这样做时,几乎每个字符都打印一次,而不是每个字典项或列项打印,例如:

['C']
['o']
['u']
['n']
['t']
['r']
['y']
['', '']
[' ']
['N']
['a']
['m']
['e']
['', '']
[' ']
['R']
['a']
['t']
['e']
[]
['', '']
['UNITED STATES Inbound SMS - Other']
['', '']
['0']
Run Code Online (Sandbox Code Playgroud)

如何将这些条目分成字典列表?

Bre*_*arn 7

csv.reader期望它的参数一次产生一行文本.您正在迭代一个字符串,一次产生一个字符.将其更改为:

reader = csv.reader(sms_prices_list.iter_lines())
Run Code Online (Sandbox Code Playgroud)

请注意,这不会为您提供字典列表,而是一个可迭代的列表,因为这csv.reader是给您的意思.此外,如果输入是UTF-8以外的Unicode编码,它可能会中断; 请参阅文档以获取有关该提示的一些提示.

  • 这不是一个错误,因为文档告诉你它应该完全按照它的方式工作.我猜想这可能是一个功能请求,但由于它已经以这种方式工作了多年,我怀疑Python社区是否会特别愿意改变它. (3认同)