列表包含以下数据,
['Obama','John Barta','IN,33,33','444','']
我正在尝试使用以下代码将此数据写入csv文件中,
with open(output_file, 'w') as writeFile:
writer = csv.writer(writeFile, delimiter=',', quotechar="'", quoting=csv.QUOTE_NONE)
writer.writerow(colValues)
但是低于csv文件中的输出,
“奥巴马”,“约翰·巴尔塔”,“” IN,33、33”,“ 444”,“”
我不希望在'“ IN,33,33”'之间使用单引号。
所需的输出:
“奥巴马”,“约翰·巴塔”,“ IN,33、33”,“ 444”,“”
答案 0 :(得分:2)
如果您从quotechar
调用中消除了csv.writer
参数,它应该会为您提供所需的行为。例如,您的函数调用将变为
writer = csv.writer(writeFile, delimiter=',', quoting=csv.QUOTE_NONE)
quotechar
参数是出现delimiter
或其他特殊字符时的位置。
答案 1 :(得分:1)
从示例输出中,您似乎想引用所有字段。因此,直接的方法是:
writer = csv.writer(writeFile, delimiter=',',
quotechar='"', quoting=csv.QUOTE_ALL)
我也将quotechar
更改为双引号,因为这也在您的示例输出中。
答案 2 :(得分:0)
也许这太简单了,但是使用默认设置write,read会返回原始列表:
import csv
col_values = ['Obama', 'John Barta', 'IN, 33, 33', '444', '']
with open('data.csv', 'w') as writeFile:
writer = csv.writer(writeFile)
writer.writerow(col_values)
#=> Obama,John Barta,"IN, 33, 33",444,
with open('data.csv', 'r') as f:
reader = csv.reader(f)
p_list = list(reader)
print(p_list)
#=> [['Obama', 'John Barta', 'IN, 33, 33', '444', '']]