Łańcuchy w języku Python mają metodę find ("somestring"), która zwraca numer indeksu dla "somestring" w ciągu znaków.Jak mogę znaleźć pierwsze wystąpienie podciągu występującego po innym podciągu w pythonie?
Ale powiedzmy, że mam ciąg jak poniżej:
"5 $ 7 $ 9 $ Całkowity koszt: $ $ 35 14"
I chcę, aby znaleźć indeks pierwszego wystąpienia '$', który występuje po ciąg "Całkowity koszt" - Chciałbym móc powiedzieć Pythonowi, wyszukać '$', zaczynając od numeru indeksu dla "Całkowitego kosztu", i zwrócić numer indeksu (w odniesieniu do całego ciągu znaków) za pierwsze wystąpienie "$", które znajdziesz. Metoda find() zwróciłaby 0, a funkcja rfind() również nie działałaby w tym przypadku.
Jeden rodzaj kludgy sposób to zrobić jest następujący:
def findStrAfterStr(myString, searchText, afterText):
splitString = myString.split(afterText)
myIndex = len(splitString[0]) + len(afterText) + splitString[1].find(searchText)
return myIndex
myString = "$5 $7 $9 Total Cost: $35 $14"
searchText = "$"
afterText = "Total Cost"
findStrAfterStr(myString, searchText, afterText)
Ale wydaje się, że powinien być łatwiejszy sposób, aby to zrobić, i zakładam prawdopodobnie istnieje, a ja po prostu nie wiem co to jest. Myśli?
Byłoby to szczególnie przydatne do krojenia, gdy znajdę się robi to dużo:
myString[myString.find("startingSubstr"):myString.find("endingSubstr")]
i naturalnie chcę „endingSubstr” być tym, który występuje po „startingSubstr”.
Należy użyć wyrażenia regularnego. Czy naprawdę potrzebujesz miejsca na $, lub po prostu potrzebujesz dowiedzieć się o ilości pieniędzy? – lolopop
Jestem trochę regex n00b - jak to zrobić z wyrażeniem regularnym? – CQP
Jeszcze raz, czego potrzebujesz? – lolopop