我从谷歌文档中提取数据,处理它,并将其写入文件(最终我将粘贴到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"))
最后一行有一个编码错误:
'ascii'编解码器不能解码字节0xa0在位置
12286:序数不在范围(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
也许我需要写一些东西,而不是一个文本文件?
如果用python3编写
>>> a = u'bats\u00E0'
>>> print a
batsà
>>> f = open("/tmp/test", "w")
>>> f.write(a)
>>> f.close()
>>> data = open("/tmp/test").read()
>>> data
'batsà'
如果用python2编写:
>>> a = u'bats\u00E0'
>>> f = open("/tmp/test", "w")
>>> f.write(a)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
UnicodeEncodeError: 'ascii' codec can't encode character u'\xe0' in position 4: ordinal not in range(128)
为了避免这个错误,你必须使用“utf-8”编解码器将其编码为字节,就像这样:
>>> f.write(a.encode("utf-8"))
>>> f.close()
并在读取时使用“utf-8”编解码器解码数据:
>>> data = open("/tmp/test").read()
>>> data.decode("utf-8")
u'bats\xe0'
另外,如果你试图对这个字符串执行print,它会自动解码使用“utf-8”编解码器,就像这样
>>> print a
batsà