it-swarm.com.de

Wie schneide ich Leerzeichen aus einer Python-Zeichenfolge?

Wie entferne ich führende und nachgestellte Leerzeichen von einer Zeichenfolge in Python?

Zum Beispiel:

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

Nur ein Platz oder alle derartigen Räume? Wenn die zweite, dann haben Zeichenfolgen bereits eine .strip()-Methode:

>>> ' Hello '.strip()
'Hello'
>>> ' Hello'.strip()
'Hello'
>>> 'Bob has a cat'.strip()
'Bob has a cat'
>>> '          Hello        '.strip()  # ALL spaces at ends removed
'Hello'

Wenn Sie jedoch nur ein Leerzeichen entfernen müssen, können Sie Folgendes tun:

def strip_one_space(s):
    if s.endswith(" "): s = s[:-1]
    if s.startswith(" "): s = s[1:]
    return s

>>> strip_one_space("   Hello ")
'  Hello'

Beachten Sie auch, dass str.strip() auch andere Leerzeichen (z. B. Tabulatoren und Zeilenumbrüche) entfernt. Um nur Leerzeichen zu entfernen, können Sie das zu entfernende Zeichen als Argument für strip angeben, d. H .:

>>> "  Hello\n".strip(" ")
'Hello\n'
1575
Brian

Wie oben in den Antworten aufgezeigt 

myString.strip()

entfernt alle führenden und nachfolgenden Leerzeichen wie\n,\r,\t,\f, Leerzeichen.

Für mehr Flexibilität verwenden Sie das Folgende

  • Entfernt nur führende Leerzeichen: myString.lstrip()
  • Entfernt nur nachgestellte Leerzeichenzeichen: myString.rstrip()
  • Entfernt spezifische Whitespace-Zeichen: myString.strip('\n') oder myString.lstrip('\n\r') oder myString.rstrip('\n\t') und so weiter.

Weitere Details finden Sie in der docs

245
Mudit Jain

strip ist auch nicht auf Leerzeichen beschränkt:

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

Dadurch werden all führende und nachgestellte Leerzeichen in myString entfernt:

myString.strip()
47
Deniz Dogan

Sie wollen strip ():

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

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

Ich wollte die zu vielen Leerzeichen in einer Zeichenfolge entfernen (auch zwischen den Zeichenfolgen, nicht nur am Anfang oder am Ende). Ich habe das gemacht, weil ich nicht weiß, wie ich es sonst machen soll:

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)

Dies ersetzt doppelte Leerzeichen in einem Leerzeichen, bis Sie keine doppelten Leerzeichen mehr haben

0
Marjan

Ich konnte keine Lösung für das finden, wonach ich suchte, also habe ich einige benutzerdefinierte Funktionen erstellt. Sie können sie ausprobieren.

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