在Python中,删除字符串中的空格、空行,tab制表符、行結束符等特殊字符的方法多種多樣,比較靈活。常見的用法有删除字符串開始或末尾的空格,但也可以删除字符串中間的空格、還可以删除tab制表符、回車符等操作。删除不需要的字符,便于比較字符串。衆所周知,excel中使用trim函數删除字符串首尾部的空格,但python中的字符串格式提供了lstrip()、rstrip()和strip()方法,實現類似trim的功能。
删除字符串開頭的空格python的str 類型提供了一個删除字符串開頭的字符串的函數:str.lstrip,調用這個函數不需要參數,就可以把字符串的開頭的空格删除。
>>>' hello '.lstrip()
'hello '
但是如果隻想删除開頭的第一個空格,可以對該字符串進行切分,代碼如下:
>>> s = ' hello'
>>> s = s[1:]
>>> s
' hello'
對于不能确定目标字符串的開頭是否有1個以上的空格,就需要先檢查:
>> def strip_first(s: str, ch: str = ' ') -> str:
if s and s[0] == ch:
return s[1:]
return s
>>> strip_first('hello')
'hello'
>>> strip_first(' hello')
' hello'
python的str 類型提供了 專門的函數:str.rstrip,這個函數可以指定要删除的字符串尾部的字符,如不指定字符,則默認為删除字符串尾部的空格,代碼如下:
>>> ' hello '.rstrip()
' hello'
>>> '***hello***'.rstrip('*')
'***hello'
如果要求隻删除字符串尾部的最後一個空格或字符,可以采用與上文所說的類似的方法,先要檢查字符串尾部是否有1個以上的空格,代碼如下:
>>> def strip_last(s: str, ch: str = ' ') -> str:
if s and s[-1] == ch:
return s[:-1]
return s
>>> strip_last('hello')
'hello'
>>> strip_last('hello ')
'hello'
>>> strip_last('')
''
可以用 str.strip 函數删除指定字符串中所有的空格或指定的字符,不僅包括開頭或末尾的空格,也包括字符串中間的空格。strip()函數不指定參數,則默認為空格;strip('*'),則删除字符串中的 ‘*’ ,代碼如下:
>>> ' hello '.strip()
'hello'
>>> '***hello***'.strip('*')
'hello'
可以利用 strip() 函數可以指定要删除的字符這一特點,指定要删除的字符為 “\n” ,即可删除一段字符串文字中的空行,操作如下:
>>> s = """
...
...
... hello
...
...
... """
>>> s
'\n\n\n hello\n\n\n'
>>> s.strip('\n')
' hello'
用strip函數删除字符串中的軟回車符('\r')或硬回車符('\n'), 兩者連接在一起 ‘\r\n’ 就形成新的一行,删除這樣的行,就要删除回車符,操作如下:
>>> s = " hello world\r\n\r\n"
>>> print(s)
hello world
>>> s.strip('\r\n')
' hello world'
python中删除字符串中的制表符tab,使用str.strip('\t')即可,操作如下:
>>> s = "\t\t\t hello world \t"
>>> s
'\t\t\t hello world \t'
>>> print(s)
hello world
>>> s.strip('\t')
' hello world '
上文中,好幾處地方都在使用str.strip()函數時指定了參數,該參數可以是單個的字符,也可以是多個字符,利用這一點,就可以使用該函數删除指定字符串中的某些字符串組合,示例如下:
>>> s = " \ns hello world \n s"
>>> s
' \ns hello world \n s'
>>> print(s)
s hello world
s
>>> s.strip('\n s')
'hello world'
有時候需要删除一句或一段文字中多餘或重複的空格,單詞之間隻保留一個空格,這樣文字就比較規範,示例如下:
>>> import re
>>> s = " Python is really a great language. "
>>> re.sub("\s " , " ", s)
' Python is really a great language. '
以上方法使用正則函數re.sub(), 把連續空格超過3個以上的片段字符,隻保留1個空格。
還可以用split()函數先把字符串切分,再用join()函數連接,示例如下:
>>> s = " Python is really a great language. "
>>> " ".join(s.split())
'Python is really a great language.'
>>> # This is the same as using regex then stripping the whitespaces
>>> re.sub("\s " , " ", s).strip()
'Python is really a great language.'
與删除一個字符串中的空格或特殊字符的方法一樣,隻需要做叠代操作,示例如下:
>>> lst = ["string1\n", "string2\n", "string3\n"]
>>> [s.strip('\n') for s in lst]
['string1', 'string2', 'string3']
numpy工具包中不僅有.lstrip, .rstrip, .replace這樣的字符串操作函數,而且還有更多的其他字符串操作函數,但是這與python内置的方法還是有點差别,numpy中使用nump.char函數模塊,因此其參數必須是向量化的數組或字符的列表。用法示例如下:
>>> import numpy as np
>>> arr = np.array([' helloworld ', ' hello'])
array([' helloworld ', ' hello'], dtype='<U7')
>>> np.char.strip(arr, ' ')
array(['helloworld', 'hello'], dtype='<U7')
(本文完)
,
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!