1

如果这是一个愚蠢的问题,请随时骚扰我,因为我自己没有找到正确的答案。我正在尝试读取包含每一行数据的 CSV 格式文件,并且每一行都以逗号结尾。像这样:

-1,
-1,
1,
1,

当我尝试使用 Python 的 CSV 函数时,我使用以下代码:

with open(waveform, 'rb') as f:
    reader = csv.reader(f)
    for row in reader:
        print row

输出以下内容:

['-1', '']
['-1', '']
['1', '']
['1', '']

我希望它忽略每一行的空字符。你有什么建议吗?

4

2 回答 2

5

忽略每一行的最后一个元素:

with open(waveform, 'rb') as f:
    reader = csv.reader(f)
    for row in reader:
        print row[:-1]

或将每一行转换为字典:

columns = ['value']
with open(waveform, 'rb') as f:
    reader = csv.reader(f)
    for row in reader:
        rec = dict(zip(columns, row))
        print rec

印刷

{'value': '-1'}
{'value': '-1'}
{'value': '1'}
{'value': '1'}
于 2012-07-16T11:49:17.343 回答
2

我会选择@eumiro 的回答。

有一个lineterminator=选项,csv.reader但显然目前被忽略了......,所以是不行的。

如果您必须 csv.reader没有看到尾随字段分隔符,请编写一个过滤器:

def remove_last_char(fileobj):
    for line in fileobj:
        yield line.strip()[:-1]

with open(waveform, 'rb') as f:
    reader = csv.reader( remove_last_char(f) )
    for row in reader:
        print row[:-1]
于 2012-07-16T11:58:25.783 回答