我想在字符串中用下划线替换空白,以创建良好的url。例如:

"This should be connected" 

应该成为

"This_should_be_connected" 

我使用Python和Django。这可以用正则表达式解决吗?


当前回答

我使用下面的一段代码为我的友好网址:

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字符。

其他回答

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"

使用字符串的replace方法:

“这应该是有联系的”。Replace (" ", "_")

“this_should_be_disconnected”。Replace ("_", " ")

Python在字符串上有一个内置的方法,叫做replace,它的用法如下:

string.replace(old, new)

所以你可以用:

string.replace(" ", "_")

我以前遇到过这个问题,我写了代码来替换字符串中的字符。我必须开始记得检查python文档,因为它们为所有东西都内置了函数。

mystring.replace (" ", "_")

如果你将这个值赋给任何变量,它都可以工作

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

默认情况下mystring不会有这个

我使用下面的一段代码为我的友好网址:

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字符。