原代码
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)