2013-07-16 37 views
6

Làm cách nào để xóa một chuỗi có tất cả \n\t trong trăn khác ngoài việc sử dụng strip()?Xóa n hoặc t khỏi một chuỗi đã cho

Tôi muốn định dạng một chuỗi như "abc \n \t \t\t \t \nefg" để "abcefg "?

result = re.match("\n\t ", "abc \n\t efg") 
print result 

và kết quả là None

Trả lời

10

Dường như bạn cũng muốn loại bỏ khoảng trắng. Bạn có thể làm một cái gì đó như thế này,

>>> import re 
>>> s = "abc \n \t \t\t \t \nefg" 
>>> s = re.sub('\s+', '', s) 
>>> s 
'abcefg' 

Một cách khác là làm,

>>> s = "abc \n \t \t\t \t \nefg" 
>>> s = s.translate(None, '\t\n ') 
>>> s 
'abcefg' 
+0

thông số cho 'Dịch()' thay đổi trong Python> 3. Bây giờ nó có một bảng dịch có thể được tạo ra bởi 'str.maketrans()'. https://docs.python.org/3/library/stdtypes.html#str.translate – gruentee

3

Như thế này:

import re 

s = 'abc \n \t \t\t \t \nefg' 
re.sub(r'\s', '', s) 
=> 'abcefg' 
6

Một số cách tiếp cận nhiều phi regex, cho nhiều:

>>> s="abc \n \t \t\t \t \nefg" 
>>> ''.join(s.split()) 
'abcefg' 
>>> ''.join(c for c in s if not c.isspace()) 
'abcefg' 
+1

Điều này nhanh hơn đáng kể so với re. – seth

+0

@ seth: Tôi nghĩ rằng 'dịch' thường xuất hiện trong trò chơi này, nơi nó có thể áp dụng. Tôi chỉ không quan tâm đến regexps. : ^) – DSM

Các vấn đề liên quan