co2*_*f2e 715 python trim removing-whitespace
我想从字符串,两端和单词之间消除所有空格.
我有这个Python代码:
def my_handle(self):
sentence = ' hello apple '
sentence.strip()
Run Code Online (Sandbox Code Playgroud)
但这只会消除字符串两边的空白.如何删除所有空格?
Céd*_*ien 1533
如果要删除前导和结尾空格,请使用str.strip()
:
sentence = ' hello apple'
sentence.strip()
>>> 'hello apple'
Run Code Online (Sandbox Code Playgroud)
如果要删除所有空格,请使用str.replace()
:
sentence = ' hello apple'
sentence.replace(" ", "")
>>> 'helloapple'
Run Code Online (Sandbox Code Playgroud)
如果要删除重复的空格,请使用str.split()
:
sentence = ' hello apple'
" ".join(sentence.split())
>>> 'hello apple'
Run Code Online (Sandbox Code Playgroud)
Mar*_*ers 244
要仅删除空格,请使用str.replace
:
sentence = sentence.replace(' ', '')
Run Code Online (Sandbox Code Playgroud)
要删除所有空格字符(空格,制表符,换行符,等等),你可以使用split
则join
:
sentence = ''.join(sentence.split())
Run Code Online (Sandbox Code Playgroud)
或正则表达式:
import re
pattern = re.compile(r'\s+')
sentence = re.sub(pattern, '', sentence)
Run Code Online (Sandbox Code Playgroud)
如果您只想从开头和结尾删除空格,可以使用strip
:
sentence = sentence.strip()
Run Code Online (Sandbox Code Playgroud)
您还可以使用lstrip
仅从字符串的开头rstrip
删除空格,并从字符串末尾删除空格.
Emi*_*röm 89
另一种方法是使用正则表达式并匹配这些奇怪的空白字符.这里有些例子:
删除字符串中的所有空格,甚至是单词之间:
import re
sentence = re.sub(r"\s+", "", sentence, flags=re.UNICODE)
Run Code Online (Sandbox Code Playgroud)
删除字符串BEGINNING中的空格:
import re
sentence = re.sub(r"^\s+", "", sentence, flags=re.UNICODE)
Run Code Online (Sandbox Code Playgroud)
删除字符串END中的空格:
import re
sentence = re.sub(r"\s+$", "", sentence, flags=re.UNICODE)
Run Code Online (Sandbox Code Playgroud)
删除BEGINNING和字符串END中的空格:
import re
sentence = re.sub("^\s+|\s+$", "", sentence, flags=re.UNICODE)
Run Code Online (Sandbox Code Playgroud)
仅删除DUPLICATE空格:
import re
sentence = " ".join(re.split("\s+", sentence, flags=re.UNICODE))
Run Code Online (Sandbox Code Playgroud)
(所有示例都适用于Python 2和Python 3)
MaK*_*MaK 36
空格包括空格,制表符和CRLF.因此,一个优雅的一行,我们可以使用字符串函数是翻译:
' hello apple'.translate(None, ' \n\t\r')
Run Code Online (Sandbox Code Playgroud)
或者如果你想彻底:
import string
' hello apple'.translate(None, string.whitespace)
Run Code Online (Sandbox Code Playgroud)
wal*_*mat 17
要从开头和结尾删除空格,请使用strip
.
>> " foo bar ".strip()
"foo bar"
Run Code Online (Sandbox Code Playgroud)
' hello \n\tapple'.translate( { ord(c):None for c in ' \n\t\r' } )
Run Code Online (Sandbox Code Playgroud)
MaK已经指出了上面的"翻译"方法.这种变体适用于Python 3(参见此问答).
小心:
strip
执行rstrip和lstrip(删除前导和尾随空格,制表符,返回和换页,但不会在字符串中间删除它们)。
如果仅替换空格和制表符,则最终可能会出现隐藏的CRLF,这些CRLF看起来与您要查找的内容匹配,但并不相同。
此外,strip有一些变化:
删除字符串的 BEGINNING 和 END 中的空格:
sentence= sentence.strip()
Run Code Online (Sandbox Code Playgroud)
删除字符串开头的空格:
sentence = sentence.lstrip()
Run Code Online (Sandbox Code Playgroud)
删除字符串末尾的空格:
sentence= sentence.rstrip()
Run Code Online (Sandbox Code Playgroud)
三个字符串函数都可以strip
lstrip
,并且rstrip
可以带参数的字符串进行剥离,默认全是空格。这在您处理特定内容时会很有帮助,例如,您可以只删除空格而不能删除换行符:
" 1. Step 1\n".strip(" ")
Run Code Online (Sandbox Code Playgroud)
或者您可以在读取字符串列表时删除多余的逗号:
"1,2,3,".strip(",")
Run Code Online (Sandbox Code Playgroud)
消除字符串两端和单词之间的所有空格。
>>> import re
>>> re.sub("\s+", # one or more repetition of whitespace
'', # replace with empty string (->remove)
''' hello
... apple
... ''')
'helloapple'
Run Code Online (Sandbox Code Playgroud)
Python 文档:
我使用 split() 忽略所有空格并使用 join() 连接字符串。
sentence = ''.join(' hello apple '.split())
print(sentence) #=> 'helloapple'
Run Code Online (Sandbox Code Playgroud)
我更喜欢这种方法,因为它只是一个表达式(而不是语句)。
它易于使用,无需绑定变量即可使用。
print(''.join(' hello apple '.split())) # no need to binding to a variable
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1539531 次 |
最近记录: |