2013-06-10 27 views
5

Tôi có đoạn mã sau:Python - chuỗi in vào màn hình, bao gồm n sản lượng

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

tôi muốn người dùng có thể nhìn thấy các '\ n' có trong mẫu. Hiện tại, mẫu '\ n' viết một dòng mới vào màn hình. Vì vậy, đầu ra là như sau:

Found 10 matches to something.* 
in file. 

và tôi muốn nó được:

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

Vâng, pattern.replace ("\ n", "\ n") không làm việc. Nhưng tôi muốn nó in tất cả các dạng ký tự thoát, bao gồm \ t, \ e v.v. Bất kỳ trợ giúp nào đều được đánh giá cao.

+0

Điều này đã được hỏi, hy vọng điều này chỉ cho bạn đúng hướng: http://stackoverflow.com/questions/6477823/python-display-special-characters-when-using -print-statement – dkroy

+0

'displayPattern =" một cái gì đó. * \ s "' sử dụng '\ s' để tìm ký tự newline – abhishekgarg

Trả lời

6

Sử dụng repr(pattern) để in \n theo cách bạn cần.

3

Hãy thử điều này:

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

Bạn sẽ phải chỉ định một chuỗi khác nhau cho từng trường hợp của mô hình - một cho phù hợp và một cho hiển thị. Trong mẫu hiển thị, hãy chú ý cách ký tự \ đang được thoát: \\.

Ngoài ra, sử dụng được xây dựng trong repr() chức năng:

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

Hope this helps.

+1

Tại sao sử dụng' string .__ repr __() 'thay vì' repr (string) '? –

+0

@ntpeterson Tôi đã không nhận ra nó tồn tại cho đến bây giờ. Thay đổi nó ngay bây giờ. – Drew

0

Một cách khác để sử dụng repr là với chuỗi định dạng% r. Tôi thường viết thư này là

print "Found %d matches to %r in file." % (numMatches, pattern) 
Các vấn đề liên quan