繁体   English   中英

Python CSV - 双双引号被写入 CSV 文件?

[英]Python CSV - Double-double quotes being written into CSV file?

我正在尝试将一些数据写入 csv 文件。 我只希望中间列在 csv 文件中有引号。 我从在数组上保存在数组中的数据开始。 以下是打印出来的一些条目:

['1', '"For Those About To Rock We Salute You"', 'Album']
['2', '"Balls to the Wall"', 'Album']
['3', '"Restless and Wild"', 'Album']
['4', '"Let There Be Rock"', 'Album']
['5', '"Big Ones"', 'Album']
['6', '"Jagged Little Pill"', 'Album']
...

如您所见,唯一的中间列有引号。 但是,当我将其写入 csv 文件时,这就是我得到的:

1,""For Those About To Rock We Salute You"",Album
2,""Balls to the Wall"",Album
3,""Restless and Wild"",Album
4,""Let There Be Rock"",Album
5,""Big Ones"",Album
6,""Jagged Little Pill"",Album
...

除了中间那一栏,一切都很好! 我有双引号!

我有一个函数可以获取数据(保存在数组数组中),并将其写入 csv 文件。 我查看了QUOTE_NONE方法,但这似乎不起作用......

file_data = ...
def write_node_csv():
    with open("./csv_files/albums.csv", mode='w') as csv_file:
        writer = csv.writer(csv_file, delimiter=',', quoting=csv.QUOTE_NONE, escapechar="\"")
        for data in file_data:
            writer.writerow(data)
    csv_file.close()

所以基本上我期待这个:

1,"For Those About To Rock We Salute You",Album
2,"Balls to the Wall",Album
3,"Restless and Wild",Album
4,"Let There Be Rock",Album
5,"Big Ones",Album
6,"Jagged Little Pill",Album
...

但我得到了这个:

1,""For Those About To Rock We Salute You"",Album
2,""Balls to the Wall"",Album
3,""Restless and Wild"",Album
4,""Let There Be Rock"",Album
5,""Big Ones"",Album
6,""Jagged Little Pill"",Album
...

这是获取结果的演示:

In []:
data = """'1', '"For Those About To Rock We Salute You"', 'Album'
'2', '"Balls to the Wall"', 'Album'
'3', '"Restless and Wild"', 'Album'
'4', '"Let There Be Rock"', 'Album'
'5', '"Big Ones"', 'Album'
'6', '"Jagged Little Pill"', 'Album'"""

import csv
with StringIO(data) as fin:
    reader = csv.reader(fin, quotechar="'", skipinitialspace=True)
    for row in reader:
        print(row)

Out[]:
['1', '"For Those About To Rock We Salute You"', 'Album']
['2', '"Balls to the Wall"', 'Album']
['3', '"Restless and Wild"', 'Album']
['4', '"Let There Be Rock"', 'Album']
['5', '"Big Ones"', 'Album']
['6', '"Jagged Little Pill"', 'Album']

In []:
with StringIO(data) as fin, StringIO() as fout:
    reader = csv.reader(fin, quotechar="'", skipinitialspace=True)
    writer = csv.writer(fout, quotechar='', quoting=csv.QUOTE_NONE)
    writer.writerows(reader)
    contents = fout.getvalue()
print(contents)

Out[]:
1,"For Those About To Rock We Salute You",Album
2,"Balls to the Wall",Album
3,"Restless and Wild",Album
4,"Let There Be Rock",Album
5,"Big Ones",Album
6,"Jagged Little Pill",Album

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM