如何将 unicode 写入 txt? Python [重复]

Posted

技术标签:

【中文标题】如何将 unicode 写入 txt? Python [重复]【英文标题】:How can I write unicode to a txt? Python [duplicate] 【发布时间】:2021-03-11 09:32:18 【问题描述】:

我想知道如何在 txt 文件中不仅写入 ascci 的 128 个字符,而且还写入 unicode 的字符,我想创建文件并开始写入,然后我想重新打开该文件并继续写在下面。

考虑到我需要复制文件的内容,也就是说,我应该看不到任何内容, 例如一个

 \n 

但是换行,

对于您可以输入的每个 Unicode 字符,依此类推 重点不是让程序读取它,而是拥有txt文件,然后从记事本中安静地读取它

def write_file(text, name_table):
    file = open("llenado_tabla_" + name_table + ".txt","a")
    file.write(text)
    file.close()

def create_file(name_table, atributos):
    file = open("llenado_tabla_" + name_tabla + ".txt","w")
    file.write("-- Llenando tabla " + name_tabla + '\n')
    file.write("INSERT INTO\n")
    file.write(nombre_tabla + '(')
    for i in range(len(atributos)):
        if i == len(atributos) - 1:
            file.write(atributos[i] + ') \n VALUES \n')
        else:
            file.write(atributos[i] + ',')
    file.close()

当我尝试时,我得到了这个错误:

Traceback (most recent call last):
  File "D:\Projects2.0\4to semestre\Bases de datos\creador_tablas.py", line 96, in <module>
    main()
  File "D:\Projects2.0\4to semestre\Bases de datos\creador_tablas.py", line 95, in main
    introducir_registros(atributos, tipo_dato, cantidad_id, id_generado, nombre_tabla)
  File "D:\Projects2.0\4to semestre\Bases de datos\creador_tablas.py", line 62, in introducir_registros
    insertar_datos_txt(datos_tabla, False, nombre_tabla)
  File "D:\Projects2.0\4to semestre\Bases de datos\creador_tablas.py", line 29, in insertar_datos_txt
    escribe_fichero(texto, nombre_tabla)
  File "D:\Projects2.0\4to semestre\Bases de datos\creador_tablas.py", line 3, in escribe_fichero
    archivo.write(texto)
  File "C:\Python39\lib\encodings\cp1252.py", line 19, in encode
    return codecs.charmap_encode(input,self.errors,encoding_table)[0]
UnicodeEncodeError: 'charmap' codec can't encode character '\u2212' in position 25: character maps to <undefined>

【问题讨论】:

ASCII (!) 有 128 个字符。 我的坏@KlausD。对不起 重复问题请参考此帖:***.com/questions/6048085/… 【参考方案1】:

Python 会透明地为您处理这个问题。 Python,尤其是 Python 3,本机使用 unicode 字符。当您将它们写入文件时,它通常以 unicode 文件格式写入。读书也一样

这是一个示例:

data = "3 unicode chars > ?☀️‼️ <"

with open('/tmp/data.uni', 'w') as f:
    f.write(data)

with open('/tmp/data.uni') as f:
    read_data = f.read()

print(read_data)

结果:

3 unicode chars > ?☀️‼️ <

这有点在 *** 网站上搞砸了,但在我的 Mac 上的 PyCharm 中,我的编辑器和运行程序时的输出中有三个表情符号。

这是它在我的 Mac 上的样子:

【讨论】:

嗯,?回答! 删除打印,因为我是从控制台执行的,但它仍然向我显示以下错误 Traceback(最近一次调用最后一次):文件“D:\Projects2.0\4to semestre\Bases de datos \ejem.py",第 3 行,在 f.write(data) 文件 "C:\Python39\lib\encodings\cp1252.py",第 19 行,在编码中返回 codecs.charmap_encode(input,self.errors ,encoding_table)[0] UnicodeEncodeError: 'charmap' codec can't encode characters in position 18-22: character maps to 第 3 行:f.write(data) 我可以看到它很棒,但在我的情况下,我不使用 IDE,我使用终端进行编译,所以我取出打印件以防万一出现问题,所以我只需要创建文件,我检查是否可以看到这些特殊字符,但仍然没有创建文件 @FJGJFOR - 好吧,问题不在于 Python。这就是我的例子所显示的。它能够处理 Unicode 源代码并读取、处理和编写 Unicode,而程序员无需做任何特殊的事情。这就是 Python 所能做的。它不能做得更好或更容易。您的系统能够使用 Unicode 做什么是完全不同的事情。可以使 Python 以不同的文件格式存储 Unicode。因此,如果您的系统不喜欢默认使用的系统,您可以使用更兼容的系统。主要要知道的是 Python 3 中的 "string" == "Unicode"。

以上是关于如何将 unicode 写入 txt? Python [重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何将txt文字编码换成unicode

如何将unicode字符串写入文件? [复制]

在 Java 中打印 Unicode 或补充字符

以 unicode 将 pandas DataFrame 写入 JSON

如何实现 qt 中qfile写出的文本 设置为unicode编码 在线等 谢谢。。。

使用 CodeGear C++ Builder 2009 将 unicode 字符串写入文件