在使用Python 3.5的AST模块为字符串文字生成代码时处理à,需要用正确的编码打开
Dealing with à in generating code for a string literal using Python 3.5's AST module, need to open with right coding
要在Transcrypt中从Python生成JavaScript Python到JS编译器,Python3.5的ast模块结合使用以下代码:
class Generator (ast.NodeVisitor):
...
...
def visit_Str (self, node):
self.emit (repr (node.s)) # Simplified to need less context on Whosebug
...
...
这很好用,例如对于 Python 的以下行:
test = "âäéèêëiîïoôöùüû"
正确翻译为:
var test = 'âäéèêëiîïoôöùüû';
只有字符à出问题:
test = "àâäéèêëiîïoôöùüû"
翻译成:
var test = 'Ĝxa0âäéèêëiîïoôöùüû';
有什么方法可以让 ast 模块读取源文件中的编码指令,例如:
# coding=<encoding name>
要打开 Python 文件进行解析,请使用
tokenize.open
而不是普通的
open
函数。
它将打开,阅读 pep263 编码提示和 return 打开的文件,就像使用正确的编码由普通 open
打开一样。
很难找到,目前不在 Green Tree Snakes 文档中。实际上是通过在 GitHub.
的 CPython 来源中搜索 'coding' 找到的已为 Green Tree Snakes 文档创建问题以添加此内容。