Qui l'opzione migliore è usare un'espressione regolare. Python ha the re
module per lavorare con le espressioni regolari.
Usiamo una semplice ricerca per trovare la posizione del "is"
:
>>> match = re.search(r"[^a-zA-Z](is)[^a-zA-Z]", mystr)
Questo restituisce il primo incontro come un oggetto partita. Abbiamo quindi è sufficiente utilizzare MatchObject.start()
per ottenere la posizione di partenza:
>>> match.start(1)
8
Edit: Un buon punto di fatto, facciamo "is"
un gruppo e match che di gruppo per essere sicuri di ottenere la posizione corretta.
Come indicato nei commenti, questo rende alcune presunzioni. Uno è che circondato da significa che "is"
non può essere all'inizio o alla fine della stringa, in tal caso, è necessaria un'espressione regolare diversa, poiché corrisponde solo alle stringhe circoscritte.
Un altro è che questo conta i numeri come caratteri speciali - hai dichiarato non alfabetico, che io intendo significa numeri inclusi. Se non vuoi che i numeri vengano contati, allora usare r"\b(is)\b"
è la soluzione corretta.
fonte
2012-05-13 13:43:25
In realtà dovresti usare '\ b' per quello. – georg
@ thg435 Per cosa, scusa? –
're.search (r '\ bis \ b')' - altrimenti si abbina anche il simbolo precedente e la posizione è sbagliata. – georg