3

为了在Transcrypt Python to 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>
4

1 回答 1

1

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

tokenize.open

而不是普通的

open

功能。

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

很难找到,目前不在 Green Tree Snakes 文档中。实际上是通过在 GitHub 上的 CPython 源中搜索“编码”找到的。

已为 Green Tree Snakes 文档创建了一个问题以添加此内容。

于 2017-01-16T11:10:57.890 回答