【问题标题】:Import csv as list in python在python中将csv作为列表导入
【发布时间】:2015-07-06 02:56:39
【问题描述】:

我正在尝试将 csv 文件作为列表导入:

file = open('curr.csv', 'rt')
f = file.read()
f = f.split(',')

print(f)

csv 文件只有 'GBP, USD' 所以我想要列表 ['GBP', 'USD']。 但是我得到的结果是:

['GBP', 'USD\n']

如何阻止 \n 出现在最后一个值上?

【问题讨论】:

  • 使用csv 模块。

标签: python list csv


【解决方案1】:

你需要去掉你的线条,但作为一种 Python 方式,你可以使用 csv module 来处理 csv 文件:

>>> import csv
>>> with open('curr.csv', 'rb') as csvfile:
...     spamreader = csv.reader(csvfile, delimiter=',')
...     print list(spamreader)

请注意,如果您只想要列表中的第一行,这将返回您的 csv 文件行的嵌套列表,您可以使用 next() 对象的 next() 方法:

>>> import csv
>>> with open('curr.csv', 'rb') as csvfile:
...     spamreader = csv.reader(csvfile, delimiter=',')
...     print spamreader.next() 

如果你想要一个列表中的所有行,你可以使用嵌套列表理解:

>>> import csv
>>> with open('curr.csv', 'rb') as csvfile:
...     spamreader = csv.reader(csvfile, delimiter=',')
...     print [j for i in spamreader for j in i]

【讨论】:

  • 一个有效的答案,但对于这样一个简单的文件来说似乎有点矫枉过正。
  • @TheBlackCat 它是处理csv 文件的正确方法。请注意,我们在这里并不是为了给 OP 提供一个临时解决方案!
  • 我同意卡斯拉的观点。围绕字符串拆分不会比 3 行短很多,同时更脆弱。
  • @Kasra 根据具体情况,处理csv 文件有多种“正确方法”。在这种情况下,处理csv 模块会增加处理多行的额外复杂性。例如,您的答案给出了[['GBP', ' USD']],这不是问题所要求的。所以在这种情况下使用更简单的方法可以避免一些混乱。
  • @TheBlackCat 是的,我注意到了。我要编辑答案!感谢关注!
猜你喜欢
  • 2013-11-04
  • 2018-02-25
  • 1970-01-01
  • 2015-07-04
  • 2022-01-03
  • 2012-12-31
  • 2014-09-12
  • 2020-10-07
相关资源
最近更新 更多