Pythonで文字列から先頭と末尾の空白を削除する方法
例えば:
" Hello " --> "Hello"
" Hello" --> "Hello"
"Hello " --> "Hello"
"Bob has a cat" --> "Bob has a cat"
たった1つのスペースか、それともすべてのスペースか2番目の場合、文字列はすでに.strip()
メソッドを持っています。
>>> ' Hello '.strip()
'Hello'
>>> ' Hello'.strip()
'Hello'
>>> 'Bob has a cat'.strip()
'Bob has a cat'
>>> ' Hello '.strip() # ALL spaces at ends removed
'Hello'
ただし、スペースを1つだけ削除する必要がある場合は、次のようにして削除できます。
def strip_one_space(s):
if s.endswith(" "): s = s[:-1]
if s.startswith(" "): s = s[1:]
return s
>>> strip_one_space(" Hello ")
' Hello'
また、str.strip()
は他の空白文字(タブや改行など)も削除します。スペースだけを削除するには、削除する文字をstrip
の引数として指定します。
>>> " Hello\n".strip(" ")
'Hello\n'
上記の回答で指摘したように
myString.strip()
\ n、\ r、\ t、\ f、スペースなどの先頭と末尾の空白文字をすべて削除します。
より柔軟にするには、以下を使用してください。
myString.lstrip()
myString.rstrip()
myString.strip('\n')
、myString.lstrip('\n\r')
、myString.rstrip('\n\t')
などを削除します。詳細は docs にあります。
strip
は、空白文字にも制限されません。
# remove all leading/trailing commas, periods and hyphens
title = title.strip(',.-')
これはmyString
の all の前後の空白を削除します
myString.strip()
あなたはstrip()が欲しい:
myphrases = [ " Hello ", " Hello", "Hello ", "Bob has a cat" ]
for phrase in myphrases:
print phrase.strip()
私は、文字列内の余りにも多くのスペースを削除したいと思いました(文字列の間にもあります。最初や最後に限らず)。私はこれを作りました、私はそうでなければそれをする方法がわからないから:
string = "Name : David Account: 1234 Another thing: something "
ready = False
while ready == False:
pos = string.find(" ")
if pos != -1:
string = string.replace(" "," ")
else:
ready = True
print(string)
ダブルスペースがなくなるまで、これは1スペースのダブルスペースを置き換えます。
探していたものに対する解決策が見つからなかったので、カスタム関数をいくつか作成しました。あなたはそれらを試すことができます。
def cleansed(s: str):
""":param s: String to be cleansed"""
assert s is not (None or "")
# return trimmed(s.replace('"', '').replace("'", ""))
return trimmed(s)
def trimmed(s: str):
""":param s: String to be cleansed"""
assert s is not (None or "")
ss = trim_start_and_end(s).replace(' ', ' ')
while ' ' in ss:
ss = ss.replace(' ', ' ')
return ss
def trim_start_and_end(s: str):
""":param s: String to be cleansed"""
assert s is not (None or "")
return trim_start(trim_end(s))
def trim_start(s: str):
""":param s: String to be cleansed"""
assert s is not (None or "")
chars = []
for c in s:
if c is not ' ' or len(chars) > 0:
chars.append(c)
return "".join(chars).lower()
def trim_end(s: str):
""":param s: String to be cleansed"""
assert s is not (None or "")
chars = []
for c in reversed(s):
if c is not ' ' or len(chars) > 0:
chars.append(c)
return "".join(reversed(chars)).lower()
s1 = ' b Beer '
s2 = 'Beer b '
s3 = ' Beer b '
s4 = ' bread butter Beer b '
cdd = trim_start(s1)
cddd = trim_end(s2)
clean1 = cleansed(s3)
clean2 = cleansed(s4)
print("\nStr: {0} Len: {1} Cleansed: {2} Len: {3}".format(s1, len(s1), cdd, len(cdd)))
print("\nStr: {0} Len: {1} Cleansed: {2} Len: {3}".format(s2, len(s2), cddd, len(cddd)))
print("\nStr: {0} Len: {1} Cleansed: {2} Len: {3}".format(s3, len(s3), clean1, len(clean1)))
print("\nStr: {0} Len: {1} Cleansed: {2} Len: {3}".format(s4, len(s4), clean2, len(clean2)))