2013-06-10 10 views
5

Mam następujący kod:Python - druk łańcuch na ekran, to n produkcji

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." 

chcę użytkownika, aby być w stanie zobaczyć „\ n” zawarte w strukturze. W tej chwili "\ n" we wzorze zapisuje nowy wiersz na ekranie. Więc wyjście jest jak:

Found 10 matches to something.* 
in file. 

i chcę go mieć:

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

Tak, pattern.replace ("\ n" "\ n") nie działa. Ale chcę, aby drukował wszystkie formy znaków ucieczki, w tym \ t, \ e itd. Każda pomoc jest doceniana.

+0

To już zapytał z nadzieją w tym punktów we właściwym kierunku: http://stackoverflow.com/questions/6477823/python-display-special-characters-when-using -print-statement – dkroy

+0

'displayPattern =" coś. * \ s "' użyj '\ s', aby znaleźć znak nowej linii. – abhishekgarg

Odpowiedz

6

Użyj repr(pattern), aby wydrukować \n tak, jak potrzebujesz.

3

Spróbuj tego:

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

Musisz określić inny ciąg znaków dla każdego przypadku wzoru - jeden dla dopasowania i jeden do wyświetlania. W szablonie wyświetlania zwróć uwagę na sposób ucieczki znaku \: \\.

Alternatywnie, użyj wbudowanego repr() funkcji:

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

nadzieję, że to pomaga.

+1

Dlaczego używać' string .__ repr __() 'zamiast' repr (string) '? –

+0

@ntpeterson Nie zdawałem sobie sprawy, że to istniało do tej pory. Zmieniam to teraz. – Drew

0

Innym sposobem użycia repr jest łańcuch znaków% r. I zwykle piszę to jako

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