Pytanie w sprawie regex, python – Usuwanie pierwszego wystąpienia słowa z łańcucha?

13

Nie jestem zaznajomiony z wyrażeniem regularnym i byłoby wspaniale, gdyby ktoś podający rozwiązanie za pomocą wyrażenia regularnego mógł wyjaśnić ich składnię, abym mógł zastosować ją do przyszłych sytuacji.

Mam ciąg (tj.'Description: Mary had a little lamb') i chciałbym je usunąć'Description: ' taki, że ciąg będzie czytał'Mary had a little lamb,' ale tylko pierwsza instancja, taka, jeśli sznur był'Description: Description', nowy ciąg będzie'Description.'

Jakieś pomysły? Dzięki!

Czy wiesz, że pierwsza instancja zawsze będzie na początku ciągu? Mark Byers

Twoja odpowiedź

3   odpowiedź
2

To wyrażenie regularne będzie działać dla każdego „słowa”, a nie tylko „Opis:”

>>> import re
>>> s = 'Blah: words words more words'
>>> print re.sub(r'^\S*\s', '', s)
words words more words
>>> 
@Josiah, lepiej byłobys.partition(" ")[2]. Duncan
Jeśli chcesz usunąć pierwsze słowo w ciągu, czy nie użyjesz po prostu „.join” (s.split („”) [1:])? Josiah
0

Za pomocąregex po prostu określ licznik liczby jako1 wre.sub. Chociaż wygląda na toregex nie jest potrzebne w tym przypadku.

>>> import re
>>> text = 'Description: Mary had a little lamb'
>>> re.sub('Description: ','',text,1)
'Mary had a little lamb'
Ach, ok, dziękuję za pomoc! zhuyxn
@ song0089 Tylko 1 podstawienie jamylak
Czy mogę zapytać, co robi parametr count? song0089
32

Pythonastr.replace ma argument max replace. Więc w twoim przypadku zrób to:

>>>mystring = "Description: Mary had a little lamb Description: "
>>>print mystring.replace("Description: ","",1)

"Mary had a little lamb Description: "

Korzystanie z wyrażenia regularnego jest w zasadzie takie samo. Najpierw pobierz wyrażenie regularne:

"Description: "

Ponieważ Python jest całkiem fajny jeśli chodzi o wyrażenia regularne, jest to tylko łańcuch, który chcesz w tym przypadku usunąć. W tym celu chcesz go użyć w re.sub, który ma również zmienną count:

>>>import re
>>>re.sub("Description: ","",mystring,count=1)
'Mary had a little lamb Description: '
@omu_negru Nie, nie. Domyślnie wszystkie zdarzenia. jamylak
@omu_negru Domyślnie nie ma wartości 1, domyślnie ... Nic, co sądzę. Jeśli nie masz trzeciego argumentu, zastąpi on wszystkie wystąpienia, nie tylko pierwszy. Josiah
Ach, właśnie dowiedziałem się o .replace () kilka minut temu, dzięki! Nadal pomocne byłoby poznanie użycia wyrażenia regularnego zhuyxn
@zhuyxn Zaktualizowano, aby uzyskać rozwiązanie wyrażenia regularnego. Josiah
nie musisz podawać trzeciego argumentu, ponieważ domyślnie jest to 1 omu_negru

Powiązane pytania