2010-11-22 32 views
23

Tôi đang xây dựng một trang web với Python/Django. Người dùng gửi thẻ. Mỗi thẻ có thể chứa nhiều từ. Mỗi thẻ có một số ID. Tôi muốn đảm bảo rằng các thẻ được định dạng hơi khác nhau vẫn được công nhận là cùng một thẻ. Ví dụ: nếu một người dùng gửi thẻ "guitar điện" và người khác đã gửi "electric   guitar" (2 khoảng trắng giữa 2 từ), tôi muốn có thể nhận ra chúng là cùng một thẻ.Python/Django: Làm thế nào để loại bỏ không gian trắng và các tab từ một chuỗi?

Làm cách nào để xóa tất cả các khoảng trắng và tab phụ trong trường hợp này? Cảm ơn.

Trả lời

51

chia trên bất kỳ khoảng trắng, sau đó tham gia vào một không gian duy nhất.

' '.join(s.split()) 
+5

hoặc newline = '' .join (oldline.split()) ... đã mất một phút để tìm ra điều đó với tư cách là một newbie. – Framester

+0

Lưu ý rằng điều này loại bỏ bất kỳ khoảng trắng nào trước và sau chuỗi – andychase

7

tôi sẽ sử dụng phương pháp slugify Django, mà ngưng tụ không gian thành một dấu gạch ngang đơn và các tính năng hữu ích khác:

from django.template.defaultfilters import slugify 
+0

Sau đó, bạn cũng không cần phải lo lắng về những vấn đề như trường hợp. –

+0

Tôi nghĩ rằng slugify là giải pháp toàn diện nhất, trong khi những thứ như chia tách và tham gia, chỉ giải quyết vấn đề này một cách cụ thể. Tôi thích để nó lên đến các nhà phát triển Django. –

1

"electric guitar".split() sẽ cung cấp cho bạn ['electric', 'guitar']. Vì vậy, sẽ "electric \tguitar".

20
>>> import re 
>>> re.sub(r'\s+', ' ', 'some test with  ugly whitespace') 
'some test with ugly whitespace' 
-9

Có thể có nhiều không gian trắng như dưới đây:

var = "   This  is the example of how to remove spaces " 

Chỉ cần nhiệm vụ đơn giản như thế nào, sử dụng thay thế chức năng:

realVar = var.replace(" ",'') 

Bây giờ outpur sẽ là:

Thisistheexampleofhowtoremovespaces 

Chỉ cần Chill ......... :-)

-1

Chức năng này xóa mọi thứ không phải là chữ số trong chuỗi. Tôi sử dụng nó khắp nơi.

def parseInt(string): 
    if isinstance(string, (str, int, unicode)): 
     try: 
      digit = int(''.join([x for x in string if x.isdigit() ])) 
     except ValueError: 
      return False 
     else: 
      return digit 
    else: 
     return False 
Các vấn đề liên quan