如何在 Python 和 UNIX 中去除空格以在整个字符串中均匀地呈现一个空格 [重复]

Posted

技术标签:

【中文标题】如何在 Python 和 UNIX 中去除空格以在整个字符串中均匀地呈现一个空格 [重复]【英文标题】:How to strip spaces in Python and UNIX to render only one space uniformly throughout the string [duplicate] 【发布时间】:2013-07-22 09:34:57 【问题描述】:

假设我的字符串是

a = '    Hello, I  am     trying  to       strip spaces  perfectly '

我知道:

使用a.strip() 进行剥离将删除前面和前导的空格。 使用a.replace(" ","") 我可以删除一个空格等

如何制定这一点,以便无论有多少空格,输出总是会呈现为每个单词之间只有 一个空格,并且在开头或结尾没有空格?

(在 python 和 Unix 中)...谢谢!

【问题讨论】:

显然,Python 部分有重复。但是,unix 部分是题外话,属于 unix.stackexchange.com 或 superuser.com。 【参考方案1】:

您可以使用str.split(),然后使用str.join()。使用str.split 会自动去掉多余的空格:

>>> a = '    Hello, I  am     trying  to       strip spaces  perfectly '
>>> print ' '.join(a.split())
Hello, I am trying to strip spaces perfectly

使用 shell 工具(谢谢AdamKG!):

$ echo '    Hello, I  am\n     trying  to       strip spaces  perfectly ' | tr -s "[:space:]" " " | sed -e 's/^ *//' -e 's/ *$//'
Hello, I am trying to strip spaces perfectly

【讨论】:

这是一种特别好的方法,因为它处理所有空白,包括制表符和换行符,而不仅仅是空格。 谢谢!等待 UNIX 解决这个问题 echo ' Hello, I am trying to strip spaces perfectly ' | tr -s "[:space:]" " " | sed -e 's/^ *//' -e 's/ *$//' 输出:Hello, I am trying to strip spaces perfectly @LP tr 步骤只是将空白序列折叠成一个空格,第二个管道 (sed) 去除剩余的前导/尾随空间。 如果您打算使用sed,您可以使用它进行所有处理。 sed 's/ */ /g;s/^ //;s/ $//' <<<' Hello, I am trying to strip spaces perfectly '

以上是关于如何在 Python 和 UNIX 中去除空格以在整个字符串中均匀地呈现一个空格 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

python如何去除字符串里面的空格

JS中如何去除字符串的空格

str.join会去除空格吗

python中如何去掉字符串的空格

如何替换掉字符串里的空格?

python中如何去掉字符串的空格