So che ci sono alcuni post sulla conversione da stringa a stringa raw, ma nessuno di essi aiuta la mia situazione.Converti stringhe di input dell'utente in stringhe non formattate per creare espressioni regolari
Il mio problema è:
Diciamo, per esempio, voglio sapere se la "\ sezione" modello è nel testo "abcd \ sectiondefghi". Certo, posso farlo:
import re
motif = r"\\section"
txt = r"abcd\sectiondefghi"
pattern = re.compile(motif)
print pattern.findall(txt)
Questo mi darà quello che voglio. Tuttavia, ogni volta che voglio trovare un nuovo modello in un nuovo testo, devo cambiare il codice che è doloroso. Pertanto, voglio scrivere qualcosa di più flessibile, come questo (test.py):
import re
import sys
motif = sys.argv[1]
txt = sys.argv[2]
pattern = re.compile(motif)
print pattern.findall(txt)
Poi, voglio correre in terminale come questo:
python test.py \\section abcd\sectiondefghi
Tuttavia, ciò non funzionerà (Odio usare \\\\section
).
Quindi, c'è un modo per convertire il mio input utente (da terminale o da file) a stringa raw Python? O c'è un modo migliore di fare la compilazione del pattern di espressioni regolari dall'input dell'utente?
Grazie mille.
D'altra parte, se stai cercando stringhe letterali, re è lo strumento sbagliato. – Fredrik
@Fredrik: stavo dando per scontato che questo sarebbe stato parte di uno schema più ampio e l'OP semplicemente semplificato. –
@MartijnPieters Grazie, il re.escape aiuta davvero! – dbrg77