我在尝试解析表中的某些数据时遇到了一个小问题。我的程序读取表的一行,然后将其作为字符串放入列表中(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']
非常感谢你的帮助!
答案 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']