La maggior parte del modo Pythonic per rimuovere la prima corrispondenza delle potenziali stringhe principali?

0

Questo è un po 'difficile da descrivere, ma farò del mio meglio. In Python, posso usare string.startswith(tuple) per testare più corrispondenze. Ma startswith restituisce solo una risposta booleana, indipendentemente dal fatto che abbia trovato o meno una corrispondenza. È equivalente a any(string.startswith(substring) for substring in inputTuple) . Sto cercando un modo per restituire il resto della stringa. Quindi, ad esempio:

>>> fruits = ['apple', 'orange', 'pear']
>>> words1 = 'orange, quagga, etc.'
>>> words2 = 'giraffe, apple, etc.'
>>> magicFunc(words1, fruits)
', quagga, etc.'
>>> magicFunc(words2, fruits)
False

(Sto anche bene con la funzione che restituisce la prima stringa di corrispondenza, o un elenco di stringhe corrispondenti, o qualsiasi cosa che mi consenta di determinare dove tagliare la stringa.)

In questo momento ho questo:

remainingString(bigString, searchStrings):
    for sub in searchStrings:
        if bigString.startswith(sub):
            return bigString.partition(sub)[0]

Ick. C'è qualcosa di meglio?

    
posta Hactar 19.05.2016 - 13:06
fonte

1 risposta

0

Non esiste un modo semplice per ottenere le informazioni da .startswith , ma puoi creare un'espressione regolare che ti fornisca tali informazioni.

Un esempio:

import re

prefixes = ("foo", "moo!")

# Add a ^ before each prefix to force a match at the beginning of a string;
# escape() to allow regex-reserved characters like "*" be used in prefixes.
regex_text = "(" + "|".join("^" + re.escape(x) for x in prefixes) + ")"
match = re.search(regex_text, "foobar")
print match.end()
    
risposta data 19.05.2016 - 14:38
fonte

Leggi altre domande sui tag