2013-06-10 11 views
5

Ho il seguente codice:Python - stringa di stampa a schermo, include n in uscita

pattern = "something.*\n" #intended to be a regular expression 

fileString = some/path/to/file 

numMatches = len(re.findall(pattern, fileString, 0)) 

print "Found ", numMatches, " matches to ", pattern, " in file." 

Voglio l'utente sia in grado di vedere la '\ n' incluso nel modello. Al momento, '\ n' nel modello scrive una nuova riga sullo schermo. Così la stampa ricorda:

Found 10 matches to something.* 
in file. 

e voglio che sia:

Found 10 matches to something.*\n in file. 

Sì, pattern.replace ("\ n", "\ n") funziona. Ma voglio che stampi tutte le forme di caratteri di escape, inclusi \ t, \ e ecc. Qualsiasi aiuto è apprezzato.

+0

Questo è già stato chiesto, speriamo che questo si punta nella direzione giusta: http://stackoverflow.com/questions/6477823/python-display-special-characters-when-using -print-statement – dkroy

+0

'displayPattern =" qualcosa. * \ s "' usa '\ s' per trovare il carattere di nuova riga – abhishekgarg

risposta

6

Utilizzare repr(pattern) per stampare il \n nel modo desiderato.

3

Prova questo:

displayPattern = "something.*\\n" 
print "Found ", numMatches, " matches to ", displayPattern, " in file." 

dovrete specificare una stringa diversa per ogni caso del modello - uno per la corrispondenza e uno per la visualizzazione. Nel modello di visualizzazione, notare come viene evaso il carattere \: \\.

In alternativa, utilizzare il built-in funzione di repr():

displayPattern = repr(pattern) 
print "Found ", numMatches, " matches to ", displayPattern, " in file." 
0
print repr(string) 
#or 
print string.__repr__() 

Spero che questo aiuti.

+1

Perché usare' stringa .__ repr __() 'invece di' repr (stringa) '? –

+0

@ntpeterson Non avevo realizzato che esistesse fino ad ora. Cambiandolo ora – Drew

0

Un altro modo di utilizzare repr è con la stringa di formato% r. Io normalmente scrivere questo come

print "Found %d matches to %r in file." % (numMatches, pattern)