关于unicode:Python 2to3修复程序的PATTERN字符串中包含文字参数的问题

Problem with literal arguments in the PATTERN string for a python 2to3 fixer

我正在用python为2to3工具编写修复程序。

在我的模式字符串中,我有一个部分要匹配一个空字符串作为参数或一个空unicode字符串。 我的模式的相关块如下所示:

1
(args='""' | args='u""')

我的问题是第二个选项永远不匹配。 即使是一个人,也不会匹配。 但是,如果我只说args = any然后输出args,则可以捕获args完全等于第二个选项的情况。

是否发生了一些奇怪的unicode处理问题? 为什么第二个文字选项无法匹配?


由于2to3模式匹配旨在匹配令牌而不是文字,因此无法直接执行此操作。

相反,您可以匹配(args = STRING),然后确定转换函数内部的字符串参数的值并适当地处理它。