如何去除python字符串中的所有空格?例如,我希望将 strip my spaces
之类的字符串转换为 stripmyspaces
,但我似乎无法使用 strip()
来实现:
>>> 'strip my spaces'.strip()
'strip my spaces'
原文由 wrongusername 发布,翻译遵循 CC BY-SA 4.0 许可协议
如何去除python字符串中的所有空格?例如,我希望将 strip my spaces
之类的字符串转换为 stripmyspaces
,但我似乎无法使用 strip()
来实现:
>>> 'strip my spaces'.strip()
'strip my spaces'
原文由 wrongusername 发布,翻译遵循 CC BY-SA 4.0 许可协议
对于 Python 3:
>>> import re
>>> re.sub(r'\s+', '', 'strip my \n\t\r ASCII and \u00A0 \u2003 Unicode spaces')
'stripmyASCIIandUnicodespaces'
>>> # Or, depending on the situation:
>>> re.sub(r'(\s|\u180B|\u200B|\u200C|\u200D|\u2060|\uFEFF)+', '', \
... '\uFEFF\t\t\t strip all \u000A kinds of \u200B whitespace \n')
'stripallkindsofwhitespace'
…处理您没有想到的任何空白字符 - 相信我们,有很多。
\s
它自己总是覆盖 ASCII 空白:
此外:
re.UNICODE
的 Python 2,… \s
还涵盖了 Unicode 空白字符,例如:
…ETC。请在 此处查看完整列表,位于“具有 White_Space 属性的 Unicode 字符”下。
但是 \s
不包括未归类为空白的字符,这些字符实际上是空白,例如:
…ETC。请在 此处查看完整列表,位于“没有 White_Space 属性的相关 Unicode 字符”下。
所以这 6 个字符包含在第二个正则表达式 \u180B|\u200B|\u200C|\u200D|\u2060|\uFEFF
的列表中。
资料来源:
原文由 Tim Yates 发布,翻译遵循 CC BY-SA 4.0 许可协议
4 回答4.4k 阅读✓ 已解决
4 回答3.8k 阅读✓ 已解决
1 回答3k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
1 回答4.5k 阅读✓ 已解决
1 回答3.8k 阅读✓ 已解决
1 回答2.8k 阅读✓ 已解决
在没有 sep 参数的情况下利用 str.split 的行为:
如果您只想删除空格而不是所有空格:
过早的优化
尽管效率不是主要目标——编写清晰的代码才是——这里有一些初始时间安排:
请注意,正则表达式是缓存的,所以它没有你想象的那么慢。事先编译它会有所帮助,但只有在你 多次 调用它时才会在实践中发挥作用:
尽管 re.sub 慢了 11.3 倍,但请记住,您的瓶颈肯定在其他地方。大多数程序不会注意到这三个选项之间的区别。