如何在 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 中去除空格以在整个字符串中均匀地呈现一个空格 [重复]的主要内容,如果未能解决你的问题,请参考以下文章