csv 如何处理分隔符(;)在每行的末尾?

9o685dep  于 2022-12-20  发布在  其他
关注(0)|答案(1)|浏览(269)

我有一个CSV文件,分隔符是;,但是每一行都以分隔符结尾,如下所示:

A1;A2;A3;
B1;B2;B3;
C1;C2;C3;

因此,我的代码..

import csv

f = open('test.csv', 'r', newline='')
content = csv.DictReader(f, delimiter=';')
for element in content:
    print(element)
f.close()

..认为每行有四个值,最后一个值为空。
这不是故意的我做错什么了吗
有没有比删除每一行的最后一个值更优雅的方法来处理这个问题?

vsikbqxv

vsikbqxv1#

您的问题与this one类似但不相同。在this one中,数据被分散到一行中,并使用一个特殊字符作为换行符。您的问题不同,因为您有一个包含多行但具有额外分隔符的文件。
我找不到一个内置的方法来处理csv模块(尝试在open中执行newline=';'会引发错误),所以类似于链接问题中的the accepted answer,我们可以在将文件阅读为CSV之前操作文件的每一行:

import csv

def lines_generator(file):
    for line in file:
        yield line.rstrip(';\n')

with open("test.csv", "r") as myfile:
    content = csv.DictReader(lines_generator(myfile), delimiter=';')
    for element in content:
        print(element)

相关问题