如何使用 csv 模块为“分隔符”提供 2 个字符?

use*_*447 5 python csv

我正在尝试使用分隔符“@|@”生成 csv,但是我无法通过下面的代码实现。

import csv
ifile  = open('test.csv', "rb")
reader = csv.reader(ifile)
ofile  = open('ttest.csv', "wb")
writer = csv.writer(ofile, delimiter='|', quotechar='"', quoting=csv.QUOTE_ALL)
for row in reader:
    writer.writerow(row)
ifile.close()
ofile.close()
Run Code Online (Sandbox Code Playgroud)

运行时,它抛出以下错误。

import csv
ifile  = open('test.csv', "rb")
reader = csv.reader(ifile)
ofile  = open('ttest.csv', "wb")
writer = csv.writer(ofile, delimiter='|', quotechar='"', quoting=csv.QUOTE_ALL)
for row in reader:
    writer.writerow(row)
ifile.close()
ofile.close()
Run Code Online (Sandbox Code Playgroud)

我怎样才能实现这个目标?

Mar*_*oon 2

他们在 csv文档中说

用于分隔字段的单字符字符串。它默认为“,”。

所以你可以这样做作为替代方案。

csv.reader((line.replace('@|@', '|') for line in ifile), delimiter='|')
Run Code Online (Sandbox Code Playgroud)

所以完整的代码是,

import csv
ifile  = open('test.csv', "rb")
reader = csv.reader((line.replace('@|@', '|') for line in ifile), delimiter='|')
ofile  = open('ttest.csv', "wb")
writer = csv.writer(ofile, delimiter='|', quotechar='"', quoting=csv.QUOTE_ALL)
for row in reader:
    writer.writerow(row)
ifile.close()
ofile.close()
Run Code Online (Sandbox Code Playgroud)