Python csv 字符串到数组

新手上路,请多包涵

有人知道一个简单的库或函数来解析 csv 编码的字符串并将其转换为数组或字典吗?

我不认为我想要内置的 csv 模块,因为在我见过的所有示例中,它都采用文件路径,而不是字符串。

原文由 Drew LeSueur 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 296
2 个回答

您可以使用 io.StringIO 将字符串转换为文件对象,然后将其传递给 csv 模块:

 from io import StringIO
import csv

scsv = """text,with,Polish,non-Latin,letters
1,2,3,4,5,6
a,b,c,d,e,f
gęś,zółty,wąż,idzie,wąską,dróżką,
"""

f = StringIO(scsv)
reader = csv.reader(f, delimiter=',')
for row in reader:
    print('\t'.join(row))

更简单的版本 split() 在换行符上:

 reader = csv.reader(scsv.split('\n'), delimiter=',')
for row in reader:
    print('\t'.join(row))

或者你可以简单地 split() 这个字符串使用 \n 作为分隔符,然后 split() 将每行引用成值所以使用 csv 模块是首选。

Python 2 上,您必须导入 StringIO 作为

from StringIO import StringIO

反而。

原文由 Michał Niklas 发布,翻译遵循 CC BY-SA 4.0 许可协议

简单 - csv 模块也适用于列表:

 >>> a=["1,2,3","4,5,6"]  # or a = "1,2,3\n4,5,6".split('\n')
>>> import csv
>>> x = csv.reader(a)
>>> list(x)
[['1', '2', '3'], ['4', '5', '6']]

原文由 adamk 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏