gpt4 book ai didi

python - 正则表达式 (vim) 用于 print ... to print(...) 用于 python2 到 python3

转载 作者:太空狗 更新时间:2023-10-29 17:55:28 28 4
gpt4 key购买 nike

post仅当打印命令中有字符串时才有用。现在我有大量的源代码,其中包含一条声明,例如

print milk,butter

应该格式化为

print(milk,butter)

用\n 捕获行尾并不成功。有什么提示吗?

最佳答案

我不熟悉 2to3,但从所有评论来看,它看起来是完成这项工作的正确工具。

也就是说,也许我们可以以此问题为借口来学习一些 vim 基础知识的简短类(class)。

首先,您需要一个与正确行相匹配的模式。我认为 ^\s*print\> 可以:

  • ^ 匹配行首($ 匹配行尾)。
  • \s 匹配空格(空格或制表符)
  • * 表示前一个原子的 0 个或多个(尽可能多,或“贪心”)。
  • print 是文字串。
  • \> 匹配词尾(零宽度)。您可以改用(文字)空格或 \s\+

接下来,您需要确定要用括号括起来的部分。由于 * 是贪心的,.* 将匹配到行尾;无需将其固定在右侧。使用 \(\s*print\)\(.*\) 捕获片段,以便您可以将它们称为 \1\2 替换。

现在,将各个部分组合起来。有很多变体,我还没有尝试过“高尔夫”这个:

:%s/^\(\s*print\)\s\+\(.*\)/\1(\2)

有些人更喜欢“非常神奇”的版本,其中只有 a-z、A-Z、0-9 和 _ 被视为文字字符;那么你不需要转义括号和加号:

:%s/^\v(\s*print)\s+(.*)/\1(\2)

关于python - 正则表达式 (vim) 用于 print ... to print(...) 用于 python2 到 python3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22590183/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com