我正在尝试将一些信息添加到CSV文件中的一行,但在更新的CSV文件中,特殊字符(²,±)编码不好。让我澄清一下:
所以基本上我有一个带有以下示例行的CSV文件:
row = ["Some info", "Cell with special characters (², ±)", "Some more info"]
我正在尝试向第二列添加一些文本,因此我编写了以下代码
import csv
new_rows = []
# Open CSV file
with open('file_1.csv', 'r', encoding='UTF-8') as f1
reader = csv.reader(f1, delimiter=',')
for row in reader:
# Add text to cell, save row to memory
row[1] = row[1] + " is causing trouble"
new_rows.append(row)
# Write rows in new CSV-file
with open('file_2.csv', 'w', encoding='UTF-8', newline='') as of:
writer = csv.writer(of, delimiter=',')
writer.writerows(new_rows)
我预期的第二列中的输出如下:
"Cell with special characters (², ±) is causing troubles"
但我得到以下输出:
"Cell with special characters (??, ??) is causing troubles"
我尝试通过将编码更改为Latin-1来解决问题,或者甚至根本不提及代码中的编码,但似乎没有任何工作!
我在这里错过了什么或做错了什么?
答案 0 :(得分:0)
您的源文件可能是latin-1,您在第二个文件中将mojibakes编码为utf-8。你的代码没有错。
您需要在以良好编码读取源代码后决定是否要生成latin1或utf-8 csv(并且可能添加BOM https://github.com/pyexcel/pyexcel-io/issues/30)作为目标(也许您可以查看十六进制转储如何编码并给我们一些线索)。