往scv文件中写数据时会自动添加双引号?

原代码

import csv

# 往csv文件中写内容
con = 'Boo,186'
with open("test.csv", "w", encoding="gbk", newline="") as file:
    csv_writer = csv.writer(file)
    csv_writer.writerow([con])
    f.close()

程序运行后使用cat命令查看

>> cat test.csv
"Boo,186"

首尾会有双引号
导致后续操作数据时候因没有处理双引号而报错

原因

在 Python 中使用 csv 模块写入 csv 文件时,如果某一单元格中包含了分隔符(如逗号、分号等)或换行符等特殊字符,那么会在该单元格的两端添加双引号,以保证数据的准确性和完整性。

解决方式

如果你不希望在 csv 文件中看到双引号,可以使用 csv.writer() 函数中的 quoting 参数来指定不使用引号,例如:

import csv

con = 'Boo,186'
with open('test.csv', 'w', newline='') as file:
    writer = csv.writer(file, delimiter=',', quoting=csv.QUOTE_NONE)
    writer.writerow([con])

此时运行报错_csv.Error: need to escape, but no escapechar set
出现这个错误的原因是:如果某一单元格中包含了分隔符(如逗号、分号等)或换行符等特殊字符,那么需要使用转义字符来将其转义,否则会出现 _csv.Error: need to escape, but no escapechar set 的报错。

解决方法是在 csv.reader 或 csv.writer 中指定 escapechar 参数
例如我的字符串中包含的是“,” ,所以需要添加参数 escapechar=‘,’

完整代码

import csv

con = 'Boo,186'
with open('test.csv', 'w', newline='') as file:
    writer = csv.writer(file, delimiter=',', quoting=csv.QUOTE_NONE, escapechar=',')
    writer.writerow([con])

扩展

  • csv读取xls文件逗号丢失?

原代码

csv_reader = csv.reader(csv_file)
for row in csv_reader:
	print(row)

在Python中,使用csv库读取csv文件时,默认的字段分隔符是逗号(‘,’)。如果csv文件中的字段分隔符不是逗号,可以使用delimiter参数来指定分隔符。delimiter参数可以接受任何单个字符作为分隔符,例如制表符(‘\t’)或空格(’ ')等。

读取xls文件应该用制表符“\t”作为分隔符,此时指定分隔符即可 delimiter='\t'

修改后

csv_reader = csv.reader(csv_file, delimiter='\t')
for row in csv_reader:
	print(row)

猜你喜欢

转载自blog.csdn.net/HELLOMRP/article/details/129361360