Python CSV 问题

7 投票
4 回答
863 浏览
提问于 2025-04-15 12:41

我正在测试Python中的CSV组件,但遇到了一些问题。

我有一个比较标准的CSV字符串,默认的选项看起来都适合我的测试,但结果不应该把1、2、3、4放在一行,把5、6、7、8放在另一行吗?

非常感谢任何提供的帮助!

Python 2.6.2 (r262:71600, Apr 16 2009, 09:17:39) 
[GCC 4.0.1 (Apple Computer, Inc. build 5250)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import csv
>>> c = "1, 2, 3, 4\n 5, 6, 7, 8\n"
>>> test = csv.reader(c)
>>> for t in test:
...     print t
... 
['1']
['', '']
[' ']
['2']
['', '']
[' ']
['3']
['', '']
[' ']
['4']
[]
[' ']
['5']
['', '']
[' ']
['6']
['', '']
[' ']
['7']
['', '']
[' ']
['8']
[]
>>> 

4 个回答

2

这行代码的意思是,把一个用换行符分隔的字符串(c)变成一个可以逐行读取的格式。具体来说,csv.reader是一个工具,它能帮助我们处理以逗号分隔的文件,而这里的c.split('\n')则是把字符串c按照换行符切分成多行。最终,test就成了一个可以逐行读取这些数据的对象。

3

csv.reader 是一个可以处理可迭代对象的工具,也就是说它可以接收一个能逐行返回内容的东西。你可以查看官方文档了解更多信息。你现在传给它的是一个字符串,而字符串其实是一个逐个返回字符的可迭代对象。

所以,你可以用 csv.reader(c.splitlines()) 这样的方式来处理它,或者用类似的方法!

8

csv.reader 需要一个可以逐个取出元素的东西。你给它的是 "1, 2, 3, 4\n 5, 6, 7, 8\n";这样的话,它会一个字符一个字符地处理。试试给它一个列表,比如 ["1, 2, 3, 4\n", "5, 6, 7, 8\n"],这样它就会一行一行地处理了。

撰写回答