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

我正在尝试将一些数据写入 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

...


HUX布斯
浏览 312回答 1
1回答

胡说叔叔

这是获取结果的演示: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 csvwith 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",Album2,"Balls to the Wall",Album3,"Restless and Wild",Album4,"Let There Be Rock",Album5,"Big Ones",Album6,"Jagged Little Pill",Album
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python