作为编写在python2和python2和python3上一致工作的代码的一部分,我想测试是否有任何未加修饰的字符串字面值(任何开头没有b或u的“或”开头)。在
我很擅长编写测试用例,所以我只需要一个函数来返回.py文件中所有未修饰的字符串文本。在
例如,假设我有包含以下内容的Python代码:
example_byte_string=b'这是ASCII文本或字节的字符串'
example_unicode_string=u“这是unicode字符串”
example_unadorned_string='此字符串没有以任何方式标记,在Python2中将被视为字节,但在Python3中被视为Unicode”
example_unadorned_string2=“这就是他们所说的‘字符串’!”在
example_unadorned_string3='约翰说“真的吗?”非常大声'
我想找到所有没有显式标记的字符串,比如example_unadorned_string,这样我就可以正确地标记它们,从而使它们在python2和Python 3中运行时行为相同。在字符串中容纳引号也会很好,比如example_unadorned_string2和3,因为它们不应该在内部引号中添加u/b。显然,从长远来看,我们将放弃对python2的支持,只有字节需要显式标记。这与python推荐的方法一致-未来网: http://python-future.org/automatic_conversion.html#separating-text-from-bytes
我能想出对付grep的方法。AST看起来也有潜在的帮助。但我觉得肯定有人已经解决了这个问题,所以我想问问。在
您可能想探索
tokenize
模块(python2,python3)。一个粗略的Python 3示例如下:相关问题 更多 >
编程相关推荐