想把十几个文件的 unittest 测试转换为 pytest ,例如
        self.assertEqual(EBases,(D, B))
        self.assertEqual(Emro,[E, D, X, B, A, object])
转为
        assert EBases == (D, B)
        assert Emro == [E, D, X, B, A, object]
感觉正则真的不太好写,于是想到了结构化替换,结果怎么也找不到,去谷歌搜,才知道这个功能居然不支持 Python 文件。
为什么这样啊?如此主流的语言这个功能居然是缺失的。
Ruby 是有的,难道是,Python 什么地方太奇葩?😅

|  |      1ksc010      2021-11-10 11:55:10 +08:00 试试 python 语法解析树 | 
|  |      2SakuraSa      2021-11-10 12:07:36 +08:00 似乎可以这样处理 查找 self\.assertEqual\(\s*([^,]+)\s*,\s*(.+)\s*\) 替换 assert \1 == \2 | 
|  |      3hsfzxjy      2021-11-10 12:10:21 +08:00 via Android @SakuraSa 感觉会涉及到小括号平衡匹配,比如第一个例子就有问题。不过改成匹配行末最后一个右括号应该就可以 | 
|  |      4AndyAO OP @ksc010 真就还找到了类似的项目 - [Easy Stuctural Refactors to Python Source Code | Data Version Control · DVC]( https://dvc.org/blog/refactor) - [isidentical/refactor: AST-based fragmental source code refactoring toolkit]( https://github.com/isidentical/refactor) 正在看 | 
|      5windy2021      2021-11-10 14:11:20 +08:00 请问楼主这个是什么 IDEA 主题? | 
|      8yukinotech      2021-11-10 18:21:18 +08:00 这种肯定是走 ast 能力了,不过感觉有点高射炮打蚊子。。 |