有没有一种方法可以解析单个逗号分隔的字符串而不使用像csv.reader(..)这样的任何花哨的东西?我可以使用split(',')
函数,但当有效列值包含逗号本身时,它不起作用。 csv库有读者解析CSV文件,正确处理上述特殊情况,但我不能使用它们,因为我只需要解析一个字符串。但是,如果Python CSV允许解析单个字符串本身然后给我发消息。
答案 0 :(得分:17)
仔细查看csv
模块的文档
表示:
reader(...)
csv_reader = reader(iterable [, dialect='excel']
[optional keyword args])
for row in csv_reader:
process(row)
The "iterable" argument can be any object that returns a line
of input for each iteration, such as a file object or a list. The
optional "dialect" parameter is discussed below. The function
also accepts optional keyword arguments which override settings
provided by the dialect.
所以如果你有字符串:
>>> s = '"this is", "a test", "of the csv", "parser"'
你想要“一个为每个返回一行输入的对象 迭代“,你可以将你的字符串包装在一个列表中:
>>> r = csv.reader([s])
>>> list(r)
[['this is', 'a test', 'of the csv parser']]
这就是你用csv
模块解析字符串的方式。
答案 1 :(得分:15)
您仍然可以使用csv
解析单个字符串。使用StringIO编写字符串buffer(也称为内存文件):
import csv
from StringIO import StringIO
s = "your string"
buff = StringIO(s)
reader = csv.reader(buff)
for line in reader:
print(line)
答案 2 :(得分:2)
>>> import csv
>>> s = '"Yes, this line",can be, parsed as csv'
>>> list(csv.reader([s]))[0]
['Yes, this line', 'can be', ' parsed as csv']
>>>
基本上只是@larsks回答,但更简短,表明它适用于在引号内带有逗号的csv值。
如果您支持我,请也支持其他答案。 https://stackoverflow.com/a/35822856/1196339