python - 如何用下划线替换空格,反之亦然?

我想用字符串中的下划线替换空格来创建漂亮的URL。 例如:

"This should be connected" becomes "This_should_be_connected"

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

13个解决方案

263 votes

您不需要正则表达式。 Python有一个内置的字符串方法,可以满足您的需求:

mystring.replace(" ", "_")

rogeriopvl answered 2019-04-24T14:40:51Z

62 votes

替换空格很好,但我可能会建议更进一步处理其他URL恶意字符,如问号,撇号,感叹号等。

另请注意,SEO专家的普遍共识是破折号优先于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!"))

Triptych answered 2019-04-24T14:41:26Z

37 votes

Django具有“slugify”功能,可以执行此操作,以及其他对URL友好的优化。 它隐藏在defaultfilters模块中。

>>> from django.template.defaultfilters import slugify

>>> slugify("This should be connected")

this-should-be-connected

这不是您要求的输出,但IMO最好用于URL。

Daniel Roseman answered 2019-04-24T14:42:02Z

29 votes

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

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

xOneca answered 2019-04-24T14:42:29Z

15 votes

使用string.replace模块:

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。

Jarret Hardie answered 2019-04-24T14:43:07Z

8 votes

使用字符串替换方法:

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

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

mdirolf answered 2019-04-24T14:43:46Z

4 votes

我正在使用以下代码片段为我的友好网址:

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

Armandas answered 2019-04-24T14:44:20Z

3 votes

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

string.replace(old, new)

所以你会用:

string.replace(" ", "_")

我刚才有这个问题,我编写代码来替换字符串中的字符。 我必须开始记得检查python文档,因为它们内置了所有功能。

answered 2019-04-24T14:45:05Z

3 votes

令人惊讶的是这个库尚未提及

名为python-slugify的python包,它可以很好地进行重击:

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

Yash answered 2019-04-24T14:45:54Z

1 votes

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"

twmulloy answered 2019-04-24T14:46:22Z

1 votes

mystring.replace (" ", "_")

如果将此值分配给任何变量,它将起作用

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

默认情况下mystring不会有这个

Rajesh answered 2019-04-24T14:47:01Z

0 votes

您可以尝试这样做:

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

Meghaa Yadav answered 2019-04-24T14:47:32Z

-2 votes

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

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

answered 2019-04-24T14:48:01Z

c语言把下划线换成空格,python - 如何用下划线替换空格,反之亦然?相关推荐

  1. Python语言学习之双下划线那些事:python和双下划线使用方法之详细攻略

    Python语言学习之双下划线那些事:python和双下划线使用方法之详细攻略 目录 双下划线介绍 1.关于双下划线的函数或方法或属性 双下划线介绍 1.关于双下划线的函数或方法或属性 __name_ ...

  2. python变量必须以字母和下划线_【转载】关于python中带下划线的变量和函数的意义...

    Python 的代码风格由 PEP 8 描述.这个文档描述了 Python 编程风格的方方面面.在遵守这个文档的条件下,不同程序员编写的 Python 代码可以保持最大程度的相似风格.这样就易于阅读, ...

  3. Python中单个下划线“ _”变量的用途是什么?

    这段代码中_ after for的含义是什么? if tbh.bag:n = 0for _ in tbh.bag.atom_set():n += 1 #1楼 下划线_在Python中被视为" ...

  4. 【Python特性】Python中的下划线和双下划线是什么意思?

    平时写代码经常碰到下划线.双下划线等"奇怪"的写法,今天特意花时间彻底解决这个问题.文章内容主要参考<深入理解Python特性>一书. 文章目录 前置单下划线:_var ...

  5. Python中的下划线到底什么意思?

    1. 概述 在Python经常能见到含下划线(underscore)修饰的的变量和方法(如__name__,_var等),这些下划线的作用称之为名字修饰(name decoration).在Pytho ...

  6. python中的下划线_讲解

    python中,下划线 "_""_"" \_" 不管是单独作为变量名或者作为变量名的前缀或者后缀,是有特殊含义的,下面简要的来总结一下. 1 ...

  7. Python中的下划线

    目录 单个下划线(_) 单下划线前缀的名称 双下划线前缀名称 前后都带双下划线名称 单个下划线 有3种情况 返回交互解释器中最后一次执行语句的结果 >>> _ Traceback ( ...

  8. Python中单个下划线“_”变量的目的是什么?

    在Python中,下划线_被视为" 我不关心 "或" 丢失 "变量 python解释器将最后一个表达式值存储到名为的特殊变量中_. >>> 1 ...

  9. python 中各种下划线的神操作:_、_xx、xx_、__xx__、_ _xx、_classname_ _xx

    文章目录 1.只有一个下划线(_) 2.单个下划线开头的(_xx) 3.单个下划线结尾的(xx_) 4.两个下划线开头和结尾的 "_ _ _xx_ _ _" 5.两个下划线开头的命 ...

最新文章

  1. centos7安装redmine3.4
  2. 工业机器人行业研究报告
  3. UA MATH574 概率论 一个均匀分布的例题2018May/4
  4. [VS2005]一个简单的CodeSnippet —— 生成类的构造函数。
  5. OFFICE OUTLOOK 2007 如何设置开机自动启动
  6. 英媒:中国媒体警告将挤走苹果 苹果股价应声下跌
  7. 【co】ES6-20/21 iterator与generator
  8. NoSql理解+传统关系型数据库ACID+Nosql的CAP+BASE的理解
  9. ubuntu修改主机名
  10. 大数据相关知识点收集
  11. mysql期中考试题及答案_MySQL数据库考试试题与答案
  12. 企业网站DDOS防护解决方案
  13. 计算机课电脑如何提网速,一个简单的优化网速方法,以提高Windows7系统电脑网速教程...
  14. 电脑卸载了bandzip,但是在文件的打开方式里面还是有bandzip,注册表里又搜不到相关文件,如何解决?
  15. 2021-08-04
  16. HDU2099-整除的尾数
  17. Zotero快速复制文献
  18. verdi/debussy的快捷键 以及基本操作
  19. 天猫四大独门利器,助力品牌引领消费趋势
  20. 怎样使用word模板?两分钟教你搞定!

热门文章

  1. 量化投资实战(三)之配对交易策略---协整法
  2. cartographer代码及论文分析
  3. 用计算机制作微课教学教案,微课教案设计
  4. 工业数字化转型 — 工业自动化和控制系统
  5. 《三、企业级知识管理系统:Confluence配置邮箱服务》
  6. Intel RealSense Viewer软件工具键英文翻译
  7. C++ 动态库导出函数名乱码及解决
  8. 【Unity3D】卷轴特效
  9. 杰瑞·卡普兰:不要期望AlphaGo有人类意识,但需要它像人一样完成任务
  10. docker-registry登录认证