Python 如何用逗号空格(pep8)替换所有逗号?

Python 如何用逗号空格(pep8)替换所有逗号?,python,unix,vim,Python,Unix,Vim,我编写了一些Python代码,但不幸的是,我忘记了逗号后的一些空格(尝试跟随Pep8)。如何用逗号后跟空格替换逗号。这里的诀窍是有些逗号已经有空格了,所以如果我做一个简单的搜索并替换,有些逗号后面会有双空格。如果我将双空格替换为单空格,那么我的选项卡(扩展为空格)将变得一团糟 我正在寻找合适的vim命令,如果可能的话,还要寻找合适的unix命令。我试着这样做是为了跟随pep8。是否有任何东西可以自动更正风格错误以遵循pep8?我发现一些模块可以识别错误,但不能修复它们。Python解决方案: m

我编写了一些Python代码,但不幸的是,我忘记了逗号后的一些空格(尝试跟随Pep8)。如何用逗号后跟空格替换逗号。这里的诀窍是有些逗号已经有空格了,所以如果我做一个简单的搜索并替换,有些逗号后面会有双空格。如果我将双空格替换为单空格,那么我的选项卡(扩展为空格)将变得一团糟


我正在寻找合适的vim命令,如果可能的话,还要寻找合适的unix命令。我试着这样做是为了跟随pep8。是否有任何东西可以自动更正风格错误以遵循pep8?我发现一些模块可以识别错误,但不能修复它们。

Python解决方案

my_new_string = my_old_string.replace(',', ', ').replace(',  ', ', ')
:%s/,\ */,\ /g
如果要在文件上运行此操作:

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
解决方案

my_new_string = my_old_string.replace(',', ', ').replace(',  ', ', ')
:%s/,\ */,\ /g
vim替代:

:%s/,\([^ ]\)/, \1/g
[]
字符类中的前导
^
不是这样说的。所以它,
[^]
,匹配任何不是空格的东西


编辑,正在删除空间后的内容。
\(\)
保存内容,而
\1
返回该内容。

就自动更正错误而言,这非常有用-它附带了一个二进制文件,您可以使用它来纠正错误,尽管我恐怕不知道如何将其绑定到vim中。

对于vim中的一次性替换:

:%s/\v,(\S)/, \1/g

但是一定要使用vim插件。

这应该是正确的。我看到了
python
标记,感到很兴奋。请注意,对于字符串中可能包含逗号的任何文件来说,这都是非常危险的,例如
,'.join(someList)
,所以最好小心使用。@poke我认为正则表达式无法处理您所指的情况。只有语言解析器才能做到这一点。@kjprice并没有建议使用解析器或任何东西,只是在这样做时要小心,可能会在事后再次检查更改:)@kjprice:不知道PyLint是否有办法“转换”不兼容的代码。因为它有一个内置的paser和所有…好的,并取代它的空间。