2010-11-22 148 views
23

我正在用Python/Django构建一个网站。用户提交标签。每个标签可以包含多个单词。每个标签都有一个ID号码。我想确保格式稍有不同的标签仍然被识别为相同的标签。Python/Django:如何从字符串中删除多余的空格和制表符?

例如,如果一个用户提交了标签“电吉他”,而另一个用户提交了“electric  吉他”(这两个词之间有2个空格),我希望能够识别它们是同一个标签。

如何在这种情况下删除所有额外的空格和制表符?谢谢。

回答

51

拆分,然后在一个单一的空间加入。

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

或newline =''.join(oldline.split())...花了我一分钟的时间才发现这是一个新手。 – Framester 2011-06-17 18:12:03

+0

请注意,这将删除字符串前后的所有空白 – andychase 2013-08-02 21:27:10

7

我会用Django的slugify方法,其中凝结空间成一个单一的仪表板和其他有用的功能:在任何空白

from django.template.defaultfilters import slugify 
+0

然后你不需要担心大小写等情况。 – 2010-11-22 03:35:43

+0

我认为slugify是最好的穷举解决方案,而像分裂和连接这样的解决方案只能解决这个问题。我喜欢把它留给Django的开发者。 – 2010-11-22 03:38:13

1

"electric guitar".split()会给你['electric', 'guitar']。那么将"electric \tguitar"

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

可能有很多空格象下面这样:

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

只是做一些简单的任务一样,使用替换功能:

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

现在outpur是:

Thisistheexampleofhowtoremovespaces 

Just Chill ......... :-)

-1

该函数删除字符串中不是数字的所有内容。我在各地都使用它。

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 
相关问题