Найти - Пользователи
Полная версия: множественная замена
Начало » Python для новичков » множественная замена
1 2
sonniy
expee
Да, забыл присваивание сделать smile А на печать тебе нужно выводить не на каждой итерации цикла, а после завершения цикла.
выводит только первый вариант и он не то что нужно
sypper-pit
>>> import re
>>> i = 'мама мыла раму в больнице'
>>> print re.split(' ', i)
['\xac\xa0\xac\xa0', '\xac\xeb\xab\xa0', '\xe0\xa0\xac\xe3', '\xa2', '\xa1\xae\xab\xec\xad\xa8\xe6\xa5']
>>> text = re.split(' ', i)
>>> print text[0] + " " + text[2] + " " + text[1]
мама раму мыла
>>>
sonniy
sypper-pit
Код:

>>> import re
>>> i = ‘мама мыла раму в больнице’
>>> print re.split(' ', i)

>>> print text + “ ” + text + “ ” + text
мама раму мыла
>>>
хароший вариант =) мне нравится , но что делать если у меня более 1000 слов и они переодически меняются местами ?

я извращался : засовывал в метод .replace кортежи списки и всякую другую хню , в общем матюкалось на буфер. вот я и решил спросить может кто сталкивался
expee
sonniy, что значит не то, что нужно? Выводит: “ мыла в больнице”. Как ты и хотел нужны слова заменяются на пробелы.

i = 'мама мыла раму в больнице'
>>> for word in ['мама', 'раму']:
... i = i.replace(word, ' ')
...
>>> print i
мыла в больнице
sypper-pit, ты же сам говорил, что строка может быть любой длины и т.д. а тут такое :) если уж делать со сплитом (кстати, глупо при разбиении по пробелу использовать модуль re. у строковых объектов есть модуль split), то можно разбить строку на слова и каждое слово сравнивать со словом из “блек-листа” и если оно там есть, то удалять его из списка. а в конце преобразовать список в строку.
truporez
ну тут явно или неявно придется использовать цикл. можно его просто развернуть.
egg = 'мама мыла раму в больнице'.replace('мама',' ').replace('раму',' ')
или с регуляркой
egg = re.sub('мама|раму',' ','мама мыла раму в больнице')
а если слов много, то лучше смотреть в сторону алгоритма Ахо-Корасика
http://en.wikipedia.org/wiki/Aho-Corasick_algorithm
sonniy
expee
sonniy, что значит не то, что нужно? Выводит: “ мыла в больнице”. Как ты и хотел нужны слова заменяются на пробелы.

Код:

i = ‘мама мыла раму в больнице’
>>> for word in :
… i = i.replace(word, ‘ ’)

>>> print i
мыла в больнице
сорри , что то глюконуло, или меня, или комп =) … вроде работает ) спс
sypper-pit
sonniy
тогда придётся рисовать более сложные выражения с поисками по совпадениям слов и делать разного рода циклы.
hellslade
' '.join(filter(lambda word: word not in ['мама','раму'], s.split(' ')))
:D
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB