python阅读csv文件逗号问题

时间:2012-11-15 19:27:12

标签: python

我在尝试解析表中的某些数据时遇到了一个小问题。我的程序读取表的一行,然后将其作为字符串放入列表中(Python使用reader.next()函数将其作为默认值)。一切都很好,直到在同一个表空间中没有任何逗号分隔某些文本。在这种情况下,程序认为逗号是一个分隔符并且生成2个列表索引而不是一个,这使得list[0].split(';')之类的东西变得不可能。

我很难口头解释,所以让我来说明一下:

csv_file = | House floors | Wooden, metal and golden | 2000 |   # Illustration of an excel table

reader = csv.reader(open('csv_file.csv', 'r'))
row = reader.next()  # row: ['House floors;Wooden', 'metal and golden; 2000']
columns = row.split(';')  # columns: ['House floors, Wooden', 'metal and golden', '2000']

# But obviously what i want is this:
# columns : ['House floors', 'Wooden, metal and golden', '2000']

非常感谢你的帮助!

2 个答案:

答案 0 :(得分:5)

设置分隔符http://docs.python.org/2/library/csv.html

csv.reader(fh, delimiter='|')

答案 1 :(得分:0)

你需要设置正确的分隔符,在你的情况下是|;(从OP的例子中不清楚),例如。

csv.reader(csvfile, delimiter=';')

假设您有"House floors;Wooden, metal and golden;2000"之类的数据,您可以使用csv模块轻松解析它

import csv
import StringIO
data = "House floors;Wooden, metal and golden;2000"

csvfile = StringIO.StringIO(data)

for row in csv.reader(csvfile, delimiter=';'):
    print row

输出:

['House floors', 'Wooden, metal and golden', '2000']