在使用python3.5的AST模块为字符串文本生成代码时,需要使用正确的编码打开

2024-03-28 12:06:19 发布

您现在位置:Python中文网/ 问答频道 /正文

为了在TranscryptPython 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ôöùüû';

只有字符a会产生问题:

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

翻译为:

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

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

# coding=<encoding name>

Tags: 模块to代码testselfnode编译器var
0条回答
网友
1楼 · 发布于 2024-03-28 12:06:19

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

tokenize.open

而不是普通人

open

功能。你知道吗

它将打开、读取pep263编码提示并返回打开的文件,就像普通的open使用正确的编码打开它一样。你知道吗

很难找到,目前还没有在绿树蛇博士。实际上是通过在GitHub上的CPython源代码中搜索“编码”找到的。你知道吗

已经为Green Tree Snakes doc创建了一个问题来添加这个。你知道吗

相关问题 更多 >