首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用string.whitespace删除Python中的空格

使用string.whitespace删除Python中的空格
EN

Stack Overflow用户
提问于 2009-12-14 10:30:35
回答 5查看 66.6K关注 0票数 48

Python的string.whitespace很棒:

代码语言:javascript
复制
>>> string.whitespace
'\t\n\x0b\x0c\r '

如何将其与字符串一起使用,而无需手动键入'\t|\n|...正则表达式等?

例如,它应该能够转向:“请不要伤害我。”

转到

“请不要伤害我”

我可能想保留单个空格,但只使用字符串就足够简单了。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2009-12-14 11:59:41

对于这个用例,有一个特殊情况下的快捷方式!

如果在不带参数的情况下调用str.split,它将在一系列空格上拆分,而不是在单个字符上拆分。所以:

代码语言:javascript
复制
>>> ' '.join("Please \n don't \t hurt \x0b me.".split())
"Please don't hurt me."
票数 146
EN

Stack Overflow用户

发布于 2009-12-14 12:29:39

\s字符类有什么问题?

代码语言:javascript
复制
>>> import re

>>> pattern = re.compile(r'\s+')
>>> re.sub(pattern, ' ', "Please \n don't \t hurt \x0b me.")
"Please don't hurt me."
票数 14
EN

Stack Overflow用户

发布于 2009-12-14 18:09:27

让我们做一些合理的假设:

(1)您确实希望用一个空格替换任何一串空格字符(一个空格的长度为1或更长)。

(2)您希望相同的代码在Python 2.X下使用unicode对象进行最小程度的更改。

(3)您不希望您的代码假定文档中没有保证的内容

(4)您希望在Python3.x str对象中使用相同的代码,并且只需进行最少的更改。

当前选择的答案存在以下问题:

(a)将" " * 3更改为" " * 2,即删除重复的空格,但不删除三重、四重等空格。未通过要求1

(b)将"foo\tbar\tzot"更改为"foobarzot"不符合要求1

(c)当输入unicode对象时,获取TypeError: translate() takes exactly one argument (2 given)不符合要求2

(d)使用string.whitespace[:-1]不符合要求3;不保证string.whitespace中字符的顺序

(e)使用string.whitespace[:-1]不符合要求4;在Python2.x中,string.whitespace是'\t\n\x0b\x0c\r ';在Python3.x中,它是‘\t\n\r\x0b\x0c’

" ".join(s.split())答案和re.sub(r"\s+", " ", s)答案没有这些问题。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1898656

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档