2013-02-27 2 views
2

Я написал код Python и, к сожалению, забыл несколько пробелов после запятых (пытаясь следовать Pep8). Как заменить запятые запятыми, а затем пробелами. Фокус здесь в том, что некоторые запятые уже имеют пробелы, поэтому, если я сделаю простой поиск и заменю, некоторые запятые будут сопровождаться двойными пробелами. И если я заменю двойные пробелы одиночными пробелами, мои вкладки (которые расширяются до пробелов) будут перепутаны.Как заменить все запятые запятыми (pep8)?

Я ищу подходящую команду vim и, если возможно, соответствующую команду unix. Я пытаюсь сделать это, чтобы следовать за pep8. Есть ли что-то, что может автокорректировать стилистические ошибки, чтобы следовать за pep8? Я нашел модули, которые идентифицируют ошибки, но не исправляют их.

+2

Это должно быть сделано. Https://github.com/nvie/vim-flake8 – danodonovan

ответ

2

замена ВИМ:

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

Ведущий ^ в классе [] символов, говорит не в этом. Поэтому он, [^ ], соответствует любому, что не является пространством.

EDIT, удалял вещи после пробела. \(\) сохраняет данные, и \1 возвращает это.

+0

Правильно, и заменяет его пространством. –

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 Solution:

:%s/,\ */,\ /g 
+0

попросил решение vim или unix –

+0

, где бы вы его запустили? –

+0

Правда. Я видел, что тэг 'python' был взволнован. – inspectorG4dget

2

Что касается ошибок автокоррекции, то autopep8 отлично подходит для этого - он поставляется с двоичным кодом, который вы можете использовать для исправления ошибок на месте, хотя я боюсь, что не знаю, как вы связали его с vim ,

2

Для замены единовременного в Vim:

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

Но не использовать VIM плагин.

Смежные вопросы