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

"This should be connected" 

应该成为

"This_should_be_connected" 

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


当前回答

你可以试试这个:

mystring.replace(r' ','-')

其他回答

替换空格是可以的,但我建议进一步处理其他不利于url的字符,如问号、撇号、感叹号等。

还要注意,搜索引擎优化专家的普遍共识是,在url中,破折号比下划线更受欢迎。

import re

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!"))

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

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

你可以试试这个:

mystring.replace(r' ','-')

这考虑了空白字符而不是空格,我认为它比使用re模块更快:

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

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