web-dev-qa-db-ja.com

Python文字列から空白を削除する方法

Pythonで文字列から先頭と末尾の空白を削除する方法

例えば:

" Hello " --> "Hello"
" Hello"  --> "Hello"
"Hello "  --> "Hello"
"Bob has a cat" --> "Bob has a cat"
1049
robert

たった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'
1575
Brian

上記の回答で指摘したように 

myString.strip()

\ n、\ r、\ t、\ f、スペースなどの先頭と末尾の空白文字をすべて削除します。

より柔軟にするには、以下を使用してください。

  • 先行 空白文字だけを削除します。myString.lstrip()
  • 末尾の 空白文字のみを削除します。myString.rstrip()
  • specific 空白文字:myString.strip('\n')myString.lstrip('\n\r')myString.rstrip('\n\t')などを削除します。

詳細は docs にあります。

245
Mudit Jain

stripは、空白文字にも制限されません。

# remove all leading/trailing commas, periods and hyphens
title = title.strip(',.-')
114
Drew Noakes

これはmyString all の前後の空白を削除します

myString.strip()
47
Deniz Dogan

あなたはstrip()が欲しい:

myphrases = [ " Hello ", " Hello", "Hello ", "Bob has a cat" ]

for phrase in myphrases:
    print phrase.strip()
21
vezult

私は、文字列内の余りにも多くのスペースを削除したいと思いました(文字列の間にもあります。最初や最後に限らず)。私はこれを作りました、私はそうでなければそれをする方法がわからないから:

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スペースのダブルスペースを置き換えます。

0
Marjan

探していたものに対する解決策が見つからなかったので、カスタム関数をいくつか作成しました。あなたはそれらを試すことができます。

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)))
0
Mitch