如何将所有逗号替换为逗号加空格(pep8)?

2 投票
4 回答
2068 浏览
提问于 2025-04-17 17:20

我写了一些Python代码,但不小心在逗号后面忘了加几个空格(我在努力遵循Pep8规范)。我想把逗号替换成后面跟着空格的逗号。问题是,有些逗号后面已经有空格了,所以如果我简单地搜索并替换,可能会出现一些逗号后面跟着两个空格的情况。而如果我把两个空格替换成一个空格,那我的制表符(会被转换成空格)就会乱掉。

我想找合适的vim命令,如果可以的话,也想找合适的unix命令。我这么做是为了遵循pep8规范。有没有什么工具可以自动修正这些风格错误以符合pep8?我找到了一些模块可以识别错误,但它们并不能修复这些错误。

4 个回答

2

关于自动纠正错误的工具,autopep8 是个不错的选择。它自带一个可以直接用来修正错误的程序,不过我不太清楚怎么把它和 vim 结合起来使用。

5

Python 解决方案:

my_new_string = my_old_string.replace(',', ', ').replace(',  ', ', ')

如果你想在一个文件上运行这个:

f = open('path/to/file')
my_file_contents = f.read()
f.close()
f = open('path/to/file', 'w')
f.write(file_contents.replace(',', ', ').replace(',  ', ', '))

vim 解决方案:

:%s/,\ */,\ /g
2

vim 替换:

:%s/,\([^ ]\)/, \1/g

[] 字符类中的开头加上 ^,意思是“不是这个”。所以 [^ ] 就是匹配任何不是空格的东西。

补充说明,之前是删除空格后的内容。\(\) 用来保存一些内容,而 \1 则是把保存的内容拿出来。

撰写回答