如何用下划线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当前目录中所有文件的空格>下划线
- Django Rest Framework:创build对象后禁用字段更新
- 一对多内联select与Django的pipe理员
- 从数据库中呈现文本时,Django不显示换行符
- 芹菜 – 获取当前任务的任务ID
- 将密码作为环境variables(而不是纯文本)存储在configuration文件中是否安全?
- 您正尝试在不缺省的情况下向userprofile添加一个不可为空的字段'new_field'
- Python Django全局variables
- 如何激活PyCharmterminal内的virtualenv?
- UnicodeDecodeError:'ascii'编解码器无法解码位置0中的字节0xe0:序号不在范围内(128)