1

我在尝试解析表中的一些数据时遇到了一个小问题。我的程序读取表格的一行,然后将其作为字符串放入列表中(Python 默认使用reader.next()函数执行此操作)。一切都很好,直到没有任何逗号分隔同一表空间上的某些文本。在这种情况下,程序认为逗号是一个分隔符并生成 2 个列表索引而不是 1 个,这使得事情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']

非常感谢您的帮助!

4

2 回答 2

5

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

csv.reader(fh, delimiter='|')
于 2012-11-15T19:29:49.867 回答
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']
于 2012-11-15T19:28:37.753 回答