Le stringhe in Python hanno un metodo find ("somestring") che restituisce il numero di indice per "somestring" nella stringa.Come posso trovare la prima occorrenza di una sottostringa che si verifica dopo un'altra sottostringa in python?
ma diciamo che ho una stringa simile alla seguente:
"$ 5 $ $ 7 9 Costo totale: $ 35 $ 14"
E voglio trovare l'indice della prima occorrenza di '$' che si verifica dopo la la stringa "Costo totale": vorrei essere in grado di dire a python, cercare '$', iniziando dal numero di indice per "Costo totale" e restituire il numero di indice (relativo all'intera stringa) per la prima occorrenza di "$" che trovi. Il metodo find() restituirebbe 0 e rfind() non funzionerebbe in questo caso.
Un tipo di modo kludgy per fare questo è la seguente:
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)
Ma sembra che ci dovrebbe essere un modo più semplice per fare questo, e presumo non v'è probabilmente e io proprio non lo so Cos'è. Pensieri?
Questo sarebbe particolarmente utile per affettare, quando mi ritrovo a fare questo molto:
myString[myString.find("startingSubstr"):myString.find("endingSubstr")]
e naturalmente voglio il "endingSubstr" per essere quello che si verifica dopo il "startingSubstr".
Si dovrebbe usare espressioni regolari. Inoltre, hai davvero bisogno del posizionamento di $, o hai solo bisogno di scoprire la quantità di denaro? – lolopop
Sono un po 'un regex n00b - come faccio a fare questo con regex? – CQP
Ancora, cosa ti serve? – lolopop