Python将特殊字符串写入CSV [重复]
Posted
技术标签:
【中文标题】Python将特殊字符串写入CSV [重复]【英文标题】:Python write special string to CSV [duplicate] 【发布时间】:2019-11-20 07:12:27 【问题描述】:将特殊字符串写入 CSV 时遇到问题。
问题已解决:
def csv_write(s):
with open('test.csv', 'w', newline='', encoding='UTF-8') as f:
writer = csv.writer(f, delimiter = ',')
writer.writerow(s)
f.close()
def csv_read(path):
with open('test.csv', 'r', encoding='utf8') as f:
reader = csv.reader(f)
for row in reader:
print(row)
csv_write(['Ngày tháng năm',''])
csv_read('test.csv')
谢谢大家。
【问题讨论】:
如果你在 Excel 中打开你的 csv,这可能是一个 excel 编码器问题,superuser.com/questions/280603/… @MuhammadAhmad:csv 输出:b'Ng\xc3\xa0y th\xc3\xa1ng n\xc4\x83m'。 Tks @Shijith:每次测试都关闭文件。 tks 这个错误出现在 python2 中。使用 python 3 并且文件将被正确写入。您的代码在 python3 中完美运行。 @SubhrajyotiDas:我的 python 版本:3.8.0 64 位。 Tks 【参考方案1】:您的代码运行正常。您正在使用一个以 Latin-1 而不是 UTF-8 显示 CSV 的工具,这就是它看起来错误的原因。
【讨论】:
我使用 Excel 2019。如何更改 excel 编码? 我不使用 Excel,但尝试使用utf-8-sig
编码,就像它在重复问题中所说的那样。这将在文件的开头添加一个 UTF-8 BOM 字符,这应该对 Excel 的弱智有所帮助(尽管使用不那么愚蠢的东西可能会更好)。
tks。它正在工作!!!【参考方案2】:
python的默认编码方案是UTF-8
。
这里提到的文字是UTF-8
编码的。
如果您尝试在应用程序中打开将编码读取为ASCII
字符的文件,您将显示 - Ngà y tháng nÄm
将鼠标悬停在该站点并输入您的 UTF-8 字符串,您可以看到 ASCII
将打印相同的内容。
https://onlineutf8tools.com/convert-utf8-to-ascii
程序生成正确的输出。
import csv
def test(s):
with open('test.csv', 'w', newline='', encoding='utf8') as f:
writer = csv.writer(f, delimiter=',')
writer.writerow(s)
test(['Ngày tháng năm', ''])
以上代码在程序中输出相同的文本。 也许您可以尝试更改您正在读取文件的应用程序。
Output
Ngày tháng năm,
【讨论】:
tks。我发现我错了 这些字符在 ASCII 中未定义。您使用的是旧版 8 位编码,例如 Latin-1 或 Windows-1252。以上是关于Python将特殊字符串写入CSV [重复]的主要内容,如果未能解决你的问题,请参考以下文章
PySpark:读取 pyspark 框架中的 csv 数据。为啥它在框架中显示特殊字符?除了使用熊猫之外,以表格形式显示的任何方式[重复]