Python csv string to array

2024-04-23 17:58:10 发布

您现在位置:Python中文网/ 问答频道 /正文

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

我不想使用内置的csv module,因为在我看到的所有示例中,都采用文件路径,而不是字符串。


Tags: 文件csv函数字符串路径示例编码字典
3条回答

可以使用^{}将字符串转换为文件对象,然后将其传递给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))

或者您可以简单地使用\n作为分隔符将这个字符串split()成行,然后使用split()将每一行变成值,但是这样您必须注意引用,因此首选使用csv模块。

在Python 2上,必须将StringIO导入为

from StringIO import StringIO

相反。

简单-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']]
>>> a = "1,2"
>>> a
'1,2'
>>> b = a.split(",")
>>> b
['1', '2']

要分析CSV文件:

f = open(file.csv, "r")
lines = f.read().split("\n") # "\r\n" if needed

for line in lines:
    if line != "": # add other needed checks to skip titles
        cols = line.split(",")
        print cols

相关问题 更多 >