заменить один пробел между словами в питоне - PullRequest
1 голос
/ 04 февраля 2012

как заменить только один пробел между словами на '_' в питоне?

Например:

Ввод:

09     Web Problem       Any problem has to do with the dept. web sites
12     SW Help           Questions about installed SW (hotline support)

Вывод:

09     Web_Problem       Any_problem_has_to_do_with_the_dept._web_sites
12     SW_Help           Questions_about_installed_SW_(hotline_support)

спасибо!

Ответы [ 3 ]

2 голосов
/ 04 февраля 2012

Для этого можно использовать регулярные выражения:

>>> import re
>>> x = '09     Web Problem       Any problem has to do with the dept. web sites'
>>> print re.sub(r'([^\s])\s([^\s])', r'\1_\2',x)
09     Web_Problem       Any_problem_has_to_do_with_the_dept._web_sites

Шаблон поиска: (1) любой символ, не являющийся пробелом, за которым следует (2) одинарный белыйсимвол-пробел, за которым следует (3) другой символ, не являющийся пробелом.

Захвачены номера 1 и 3, чтобы их можно было использовать в шаблоне замены.Число 2 игнорируется, и вместо этого мы ставим подчеркивание.

Это оставляет области с несколькими пробелами в одиночестве и просто превращает встречающиеся в одиночестве символы пробела в подчеркивания, о чем я думаю, вы спрашивалидля.

1 голос
/ 04 февраля 2012

Если вы пытаетесь сохранить пробел между первым числом и текстом, то:

Обновлено:

import re
match = re.match("^([0-9]+)(\ +)(.*?)(\ +\ +)(.*)",yourstring)
output = match.group(1)+match.group(2)+match.group(3).replace(' ','_')+match.group(4)+ match.group(5).replace(' ', '_')
0 голосов
/ 04 февраля 2012

Чтобы прочитать файл, вам нужно использовать функцию open () вместе с циклом (цикл для имеет смысл) для чтения каждой строки.

Чтобы разбить строку на части, вы можете использовать изящный синтаксис среза строки. См. http://docs.python.org/tutorial/introduction.html#strings для некоторых примеров на ломтиках.

Фактическая замена пробелов на _, метод replace - это то, что вам нужно.

'abc def'.replace(' ', '_')

См. http://docs.python.org/library/stdtypes.html#string-methods для более полезных строковых методов.

Поскольку вы только начинаете работать с Python, я настоятельно рекомендую следующий урок: http://learnpythonthehardway.org/ Пройдите через все это, и у вас должна быть прочная основа для дальнейшего развития.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...