将Unicode文本写入文本文件?

2024-04-26 05:44:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我从Google文档中提取数据,进行处理,并将其写入文件(最终我将粘贴到Wordpress页面)。

它有一些非ASCII符号。如何安全地将这些转换为可在HTML源代码中使用的符号?

目前,我正在将所有内容转换为Unicode,并将其组合成一个Python字符串,然后执行以下操作:

import codecs
f = codecs.open('out.txt', mode="w", encoding="iso-8859-1")
f.write(all_html.encode("iso-8859-1", "replace"))

最后一行出现编码错误:

UnicodeDecodeError: 'ascii' codec can't decode byte 0xa0 in position 12286: ordinal not in range(128)

部分解:

此Python运行时没有错误:

row = [unicode(x.strip()) if x is not None else u'' for x in row]
all_html = row[0] + "<br/>" + row[1]
f = open('out.txt', 'w')
f.write(all_html.encode("utf-8"))

但是如果我打开实际的文本文件,我会看到很多符号,比如:

Qur’an 

也许我需要写点别的东西而不是文本文件?


Tags: intxthtml错误符号notisoopen
3条回答

通过在第一次获得unicode对象时将其解码为unicode对象,并在离开时根据需要对其进行编码,尽可能专门地处理unicode对象。

如果字符串实际上是unicode对象,则在将其写入文件之前,需要将其转换为unicode编码的字符串对象:

foo = u'Δ, Й, ק, ‎ م, ๗, あ, 叶, 葉, and 말.'
f = open('test', 'w')
f.write(foo.encode('utf8'))
f.close()

再次读取该文件时,将得到一个unicode编码的字符串,可以将其解码为unicode对象:

f = file('test', 'r')
print f.read().decode('utf8')

在Python2.6+中,您可以use ^{}这是Python3上的默认值(builtin ^{}):

import io

with io.open(filename, 'w', encoding=character_encoding) as file:
    file.write(unicode_text)

如果需要以增量方式编写文本(不需要多次调用unicode_text.encode(character_encoding)),这可能会更方便。与codecs模块不同,io模块具有适当的通用换行符支持。

Unicode字符串处理在Python3中已经标准化。

  1. 字符已存储在内存中的Unicode(32位)中
  2. 只需以utf-8打开文件 (32位Unicode到可变字节长度的utf-8转换将自动从内存转换到文件。)

    out1 = "(嘉南大圳 ㄐㄧㄚ ㄋㄢˊ ㄉㄚˋ ㄗㄨㄣˋ )"
    fobj = open("t1.txt", "w", encoding="utf-8")
    fobj.write(out1)
    fobj.close()
    

相关问题 更多 >

    热门问题