有人知道一个简单的库或函数来解析csv编码的字符串并将其转换为数组或字典吗?
我不认为我需要内置csv模块,因为在我看到的所有例子中,它接受文件路径,而不是字符串。
有人知道一个简单的库或函数来解析csv编码的字符串并将其转换为数组或字典吗?
我不认为我需要内置csv模块,因为在我看到的所有例子中,它接受文件路径,而不是字符串。
当前回答
这里有一个替代的解决方案:
>>> import pyexcel as pe
>>> text="""1,2,3
... a,b,c
... d,e,f"""
>>> s = pe.load_from_memory('csv', text)
>>> s
Sheet Name: csv
+---+---+---+
| 1 | 2 | 3 |
+---+---+---+
| a | b | c |
+---+---+---+
| d | e | f |
+---+---+---+
>>> s.to_array()
[[u'1', u'2', u'3'], [u'a', u'b', u'c'], [u'd', u'e', u'f']]
下面是文档
其他回答
这里有一个替代的解决方案:
>>> import pyexcel as pe
>>> text="""1,2,3
... a,b,c
... d,e,f"""
>>> s = pe.load_from_memory('csv', text)
>>> s
Sheet Name: csv
+---+---+---+
| 1 | 2 | 3 |
+---+---+---+
| a | b | c |
+---+---+---+
| d | e | f |
+---+---+---+
>>> s.to_array()
[[u'1', u'2', u'3'], [u'a', u'b', u'c'], [u'd', u'e', u'f']]
下面是文档
不是通用的CSV解析器,但可用于带逗号的简单字符串。
>>> 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
简单- 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']]
https://docs.python.org/2/library/csv.html?highlight=csv#csv.reader
Csvfile可以是任何支持迭代器协议的对象,并在每次调用next()方法时返回一个字符串
因此,StringIO.StringIO()、str.splitlines()甚至生成器都很好。
csv.reader() https://docs.python.org/2/library/csv.html的官方文档非常有用,它说
文件对象和列表对象都是合适的
import csv
text = """1,2,3
a,b,c
d,e,f"""
lines = text.splitlines()
reader = csv.reader(lines, delimiter=',')
for row in reader:
print('\t'.join(row))