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 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

C#中的特殊字符打印[重复]

如何防止写入特殊字符[重复]

在bash字符串中写入特殊字符[重复]

PySpark:读取 pyspark 框架中的 csv 数据。为啥它在框架中显示特殊字符?除了使用熊猫之外,以表格形式显示的任何方式[重复]

python:转换为HTML特殊字符[重复]

Python:使用熊猫从csv文件中提取特定列(包含特殊字符)