Я пытаюсь выяснить, как искать строку в python и возвращать ее, когда все вхождения ее первого символа изменяются на '*' , например - «лепет» дает «ba ** le». Любые предложения о том, как подойти к этому?Возьмите строку и верните все вхождения ее первого символа с '*'
ответ
Решение проще, чем выяснить, почему вы хотели бы:
def asteriskify(string):
if len(string) == 0: return '' # corner case pointed out by smci
return string[ 0 ] + string[ 1: ].replace(string[ 0 ], '*')
a) Ницца, за исключением случая с коротким корпусом, когда len (s) == 0 или 1. b) Никогда не вызывайте свой аргумент 'string', который маскирует пакет с тем же именем. – smci
@smci good catch on length 0. Длина 1 не проблема. И жизнь слишком коротка, чтобы беспокоиться о столкновениях с именами: они всегда будут иметь место, если не в текущей версии Python, а затем в следующем, когда будут добавлены новые пакеты. – jez
length 1 все еще ошибка, потому что 's [1:]' взрывается с IndexError [EDIT: на самом деле все в порядке, это просто ''] – smci
Любые предложения о том, как подойти к этому?
Да. Я бы предложил вам подойти к этому, взглянув на методы строки pythons, так как вы, несомненно, столкнетесь с некоторыми, которые помогут. Просто помните, что именно вы хотите делать с письмами. Я думаю, что это лучше, чем просто предлагать вам код без необходимости проведения каких-либо исследований.
https://docs.python.org/release/2.5.2/lib/string-methods.html
Спасибо. Я ценю помощь. –
Слегка щипая изящное решение @ JEZ, чтобы не взорвать на краеугольных случаях с LEN (ы) == 0 или 1:
def asteriskify(s):
if not s: # was if len(s) < 2:
return s
else:
return s[0] + s[1:].replace(s[0], '*')
использованием re.sub
>>> import re
>>> def asteriskify(my_string):
... if len(my_string)>1:
... return my_string[0]+re.sub(my_string[0],"*",my_string[1:])
... else: return my_string
...
>>> asteriskify("bable")
'ba*le'
>>> asteriskify("babble")
'ba**le'
>>> asteriskify("b")
'b'
с использованием map
, lambda
:
>>> def asteriskify(my_string):
... if len(my_string) > 1:
... return my_string[0]+"".join(map(lambda x:"*" if my_string[0]==x else x,my_string[1:]))
... else: return my_string
...
>>> asteriskify('babble')
'ba**le'
>>> asteriskify('b')
'b'
>>> asteriskify('baaabbb ahdbb ccc')
'baaa*** ahd** ccc'
- 1. Разделить строку на основе первого вхождения символа
- 2. Matching до первого вхождения символа
- 3. Удалить из строки первого вхождения данного символа
- 4. Возьмите строку и все после
- 5. УстанавливаетMnemonic подчеркивание символа, отличного от первого вхождения
- 6. удаление первого вхождения символа в DB2
- 7. База данных: SUBSTRING ДО первого вхождения символа
- 8. Возьмите строку и верните количество слов в строке - JavaScript
- 9. Как получить строку из ее первого символа в запросе sqlitedb
- 10. sed заменить все вхождения после символа
- 11. Как удалить все вхождения символа в строку в Javascript?
- 12. Удалите два символа, все вхождения в строку, используя шаблон
- 13. Замена только первого вхождения слова в строку
- 14. удалить все до последнего вхождения символа
- 15. Заменить все вхождения определенного символа и получить все варианты
- 16. D: Разделить строку из второго вхождения символа
- 17. Удалите все вхождения первого элемента в ArrayList
- 18. Удалить или заменить до первого вхождения символа в Perl
- 19. Получить все после первого символа
- 20. Как удалить все вхождения символа/подстроки?
- 21. Python :: удалите все вхождения до первого места
- 22. Как заменить все вхождения, кроме первого?
- 23. C# Добавить x вхождения символа в строку
- 24. SQL выберите строку после второго вхождения символа
- 25. разбить строку после последнего вхождения символа
- 26. Как вернуть строку без первого символа с помощью массива
- 27. C# заменить все вхождения символа только символом
- 28. заменить все вхождения определенного символа в строке
- 29. JS удалить все после последнего вхождения символа
- 30. Заменить все вхождения символа в файл
Я не понимаю, почему голосование закрывается, вопрос четко определен, а не «слишком широк». Это не показывает усилий, но это совсем другое дело. – smci