Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3中是否有来自令牌化导入pseudoprog.match的等效项?_Python - Fatal编程技术网

Python 3中是否有来自令牌化导入pseudoprog.match的等效项?

Python 3中是否有来自令牌化导入pseudoprog.match的等效项?,python,Python,我试图将一个古库转换为Python 3.5,它可以解析C++到.NET中,可以通过Python通过Pythnet来调用,并使用p援引,这样它也可以在Linux上运行。它叫SharpPY,已经好几年没有更新了。它称另一个图书馆为猎豹,它依赖于许多其他古代图书馆。到目前为止,我还找不到一个替代品,它是来自tokenize import pseudoprog的,其中它只用于一个函数,match=pseudoprog.match(self.src(),self.pos())我只是在Python 3.5中

我试图将一个古库转换为Python 3.5,它可以解析C++到.NET中,可以通过Python通过Pythnet来调用,并使用p援引,这样它也可以在Linux上运行。它叫SharpPY,已经好几年没有更新了。它称另一个图书馆为猎豹,它依赖于许多其他古代图书馆。到目前为止,我还找不到一个替代品,它是来自tokenize import pseudoprog的
,其中它只用于一个函数,
match=pseudoprog.match(self.src(),self.pos())
我只是在Python 3.5中寻找一个等价物。一旦全部完成,我就可以在GIT上发布更新后的代码,因为转换代码真的很痛苦。非常感谢。

谢谢@Eric我想我找到了解决方案:

Python 2.7:

from tokenize import pseudoprog
match = pseudoprog.match(self.src(), self.pos())
Python 3.5:

import tokenize
from tokenize import _compile
match = _compile(self).match(self.src(), self.pos())

您是否尝试过比较2.7和3.5之间的源代码?如果您描述所需函数的功能,您的问题会更好,并且更适合SO的模型。因此,“如何替换此函数”比“我应该为x使用什么工具”更适合这里。您在这里发现,依赖内置python模块的实现细节是一个坏主意。也许你不应该试图在3.5中找到相应的实现细节,而应该弄清楚它所做的事情是否可以在公共API中表达出来。所有这些都是好的方面。查看2.7源代码:generate_tokens(readline)是一个将文本流分解为Python标记的生成器。它接受一个类似readline的方法,该方法被反复调用以获取下一行输入(或EOF的“”。它使用这些成员生成5元组:令牌类型(请参见token.py)、令牌(字符串)、令牌的起始(行、列)索引(整数的2元组)、令牌的结束(行、列)索引(整数的2元组)原始行(字符串)比较Python3.5和2.7代码,唯一可比较的实例似乎是第599-601行中的
pseudomatch
<代码>而pos
仍在这里挖掘。看起来@Eric在这里有一个好主意,因为代码与2.7版本的第383-386行相匹配。这些代码看起来与我的不一样。我怀疑您需要
PseudoToken
抱歉,我只在我使用的文件中显示了所需的更改-它确实传递了一个tokenI.e。这两个例程都需要
psuedotoken
输入,因此概述的代码更改适用于2.7和3.5之间的转换。