如何用下划线replace空格,反之亦然?

我想用string中的下划线replace空格来创build漂亮的URL。 例如:

"This should be connected" becomes "This_should_be_connected" 

我正在Django使用Python。 这可以解决使用正则expression式?

你不需要正则expression式。 Python有一个内置的string方法,可以满足你的需求:

 mystring.replace(" ", "_") 

replace空格是好的,但我可能会build议进一步处理其他URL的敌对字符,如问号,撇号,感叹号等。

另外请注意,SEO专家之间的普遍共识是破折号优先在URL中强调。

 def urlify(s): # Remove all non-word characters (everything except numbers and letters) s = re.sub(r"[^\w\s]", '', s) # Replace all runs of whitespace with a single dash s = re.sub(r"\s+", '-', s) return s # Prints: I-cant-get-no-satisfaction" print urlify("I can't get no satisfaction!") 

Django有一个“slugify”function,可以做到这一点,以及其他url友好的优化。 它隐藏在defaultfilters模块中。

 >>> from django.template.defaultfilters import slugify >>> slugify("This should be connected") this-should-be-connected 

这不完全是你要求的输出,但海事组织最好在url中使用。

这考虑到空格以外的字符,我认为它比使用re模块更快:

 url = "_".join( title.split() ) 

使用re模块:

 import re re.sub('\s+', '_', "This should be connected") # This_should_be_connected re.sub('\s+', '_', 'And so\tshould this') # And_so_should_this 

除非你像上面那样有多个空格或其他可能的空格,否则你可能希望像别人所说的那样使用string.replace

使用string的replace方法:

"this should be connected".replace(" ", "_")

"this_should_be_disconnected".replace("_", " ")

我正在使用以下一段代码来处理友好的url:

 from unicodedata import normalize from re import sub def slugify(title): name = normalize('NFKD', title).encode('ascii', 'ignore').replace(' ', '-').lower() #remove `other` characters name = sub('[^a-zA-Z0-9_-]', '', name) #nomalize dashes name = sub('-+', '-', name) return name 

它与Unicode字符以及罚款。

Python有一个名为replace的string的内置方法,用法如下:

 string.replace(old, new) 

所以你会使用:

 string.replace(" ", "_") 

前一阵子我有这个问题,我写了代码来replacestring中的字符。 我必须开始记住检查python文档,因为他们已经build立了一切function。

OP是使用python,但在JavaScript(要小心,因为语法是相似的。

 // only replaces the first instance of ' ' with '_' "one two three".replace(' ', '_'); => "one_two three" // replaces all instances of ' ' with '_' "one two three".replace(/\s/g, '_'); => "one_two_three" 

令人惊讶的是,这个库还没有提到

python软件包名为python-slugify,它在slugifying方面做得相当不错:

 pip install python-slugify 

像这样工作:

 from slugify import slugify txt = "This is a test ---" r = slugify(txt) self.assertEquals(r, "this-is-a-test") txt = "This -- is a ## test ---" r = slugify(txt) self.assertEquals(r, "this-is-a-test") txt = 'C\'est déjà l\'été.' r = slugify(txt) self.assertEquals(r, "cest-deja-lete") txt = 'Nín hǎo. Wǒ shì zhōng guó rén' r = slugify(txt) self.assertEquals(r, "nin-hao-wo-shi-zhong-guo-ren") txt = 'Компьютер' r = slugify(txt) self.assertEquals(r, "kompiuter") txt = 'jaja---lol-méméméoo--a' r = slugify(txt) self.assertEquals(r, "jaja-lol-mememeoo-a") 
 mystring.replace (" ", "_") 

如果你将这个值赋给任何variables,它将会起作用

 s = mystring.replace (" ", "_") 

默认情况下mystring不会有这个

 perl -e 'map { $on=$_; s/ /_/; rename($on, $_) or warn $!; } <*>;' 

匹配和replace当前目录中所有文件的空格>下划线