使用Python 3.5的AST模块处理字符串文字的代码时处理à需要打开正确的编码

时间:2017-01-16 09:16:09

标签: python transcrypt

要在Transcrypt Python到JS编译器中从Python生成JavaScript,Python 3.5的ast模块与以下代码结合使用:

class Generator (ast.NodeVisitor):
    ...
    ...

    def visit_Str (self, node):
        self.emit (repr (node.s))  # Simplified to need less context on StackOverflow

    ...
    ...

这很好用,例如对于以下Python行:

test = "âäéèêëiîïoôöùüû"

正确翻译为:

var test = 'âäéèêëiîïoôöùüû';

只有角色à会出现问题:

test = "àâäéèêëiîïoôöùüû"

被翻译为:

var test = 'Ĝxa0âäéèêëiîïoôöùüû';

有没有办法让ast模块读取关于编码指令的源文件,如:

# coding=<encoding name>

1 个答案:

答案 0 :(得分:1)

要打开Python文件进行解析,请使用

tokenize.open

而不是普通的

open

功能

它会打开,读取pep263编码提示并返回打开的文件,好像它是由普通open使用正确的编码打开的。

很难找到,目前还不在Green Tree Snakes doc中。实际上通过搜索&#39;编码来找到它。在GitHub上的CPython源代码中。

为Green Tree Snakes doc创建了一个问题,即添加此内容。