我正在从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"))
Run Code Online (Sandbox Code Playgroud)
最后一行有编码错误:
UnicodeDecodeError:'ascii'编解码器无法解码位置12286中的字节0xa0:序数不在范围内(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"))
Run Code Online (Sandbox Code Playgroud)
但是如果我打开实际的文本文件,我会看到许多符号,如:
Qur’an
Run Code Online (Sandbox Code Playgroud)
也许我需要写一些文本文件以外的东西?
我真的很困惑codecs.open function.当我做:
file = codecs.open("temp", "w", "utf-8")
file.write(codecs.BOM_UTF8)
file.close()
Run Code Online (Sandbox Code Playgroud)
它给了我错误
UnicodeDecodeError:'ascii'编解码器无法解码位置0的字节0xef:序号不在范围内(128)
如果我做:
file = open("temp", "w")
file.write(codecs.BOM_UTF8)
file.close()
Run Code Online (Sandbox Code Playgroud)
它工作正常.
问题是为什么第一种方法失败了?我该如何插入bom?
如果第二种方法是正确的做法,那么使用点是codecs.open(filename, "w", "utf-8")什么?