Hoe trimmer ik WhiteSpace uit een string?

Hoe verwijder ik het leidende en trailing whitespace uit een string in Python?

Bijvoorbeeld:

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

Antwoord 1, Autoriteit 100%

slechts één ruimte of alle opeenvolgende ruimtes? Als de tweede, dan reeds reeds een .strip()methode:

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

Als u slechts één ruimte hoeft te verwijderen, kunt u het doen met:

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

Merk ook op dat str.strip()ook andere whitespace-tekens verwijdert (b.v. tabs en newlines). Om alleen spaties te verwijderen, kunt u het teken opgeven om te verwijderen als een argument voor strip, d.w.z.:

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

Antwoord 2, Autoriteit 15%

Zoals aangegeven in de bovenstaande antwoorden

my_string.strip()

Verwijdert alle toonaangevende en achterliggende witspace-tekens zoals \n, \r, \t, \f, Ruimte .

Gebruik voor meer flexibiliteit het volgende

  • Verwijdert alleen toonaangevend witspace tekens: my_string.lstrip()
  • Verwijdert alleen Trailing WhiteSpace CHSS: my_string.rstrip()
  • Verwijdert Specifiek WhiteSpace Chars: my_string.strip('\n')of my_string.lstrip('\n\r')of my_string.rstrip('\n\t')enzovoort.

Meer details zijn beschikbaar in de docs .


Antwoord 3, Autoriteit 7%

stripis niet beperkt tot WhiteSpace-tekens:

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

Antwoord 4, Autoriteit 3%

Hiermee wordt alle toonaangevend en trailing witruimte in myString:

myString.strip()

Antwoord 5

U wilt strip():

myphrases = [" Hello ", " Hello", "Hello ", "Bob has a cat"]
for phrase in myphrases:
    print(phrase.strip())

Antwoord 6

Dit kan ook worden gedaan met een reguliere expressie

import re
input  = " Hello "
output = re.sub(r'^\s+|\s+$', '', input)
# output = 'Hello'

Antwoord 7

Als ik deze thread als beginner zag, ging mijn hoofd tollen. Daarom bedacht hij een simpele snelkoppeling.

Hoewel str.strip()werkt om voorloop- & spaties achter het doet niets voor spaties tussen tekens.

words=input("Enter the word to test")
# If I have a user enter discontinous threads it becomes a problem
# input = "   he llo, ho w are y ou  "
n=words.strip()
print(n)
# output "he llo, ho w are y ou" - only leading & trailing spaces are removed 

In plaats daarvan gebruik str.replace()om logischer te zijn en minder fouten & beter gezegd.
De volgende code kan het gebruik van str.replace() veralgemenen

def whitespace(words):
    r=words.replace(' ','') # removes all whitespace
    n=r.replace(',','|') # other uses of replace
    return n
def run():
    words=input("Enter the word to test") # take user input
    m=whitespace(words) #encase the def in run() to imporve usability on various functions
    o=m.count('f') # for testing
    return m,o
print(run())
output- ('hello|howareyou', 0)

Kan nuttig zijn bij het erven van hetzelfde in diff. functies.


Antwoord 8

Om “Witruimte” te verwijderen die veel inspringfouten veroorzaakt bij het uitvoeren van uw voltooide code of programma’s in Pyhton. Doe gewoon het volgende; als Python blijft vertellen dat de fout(en) inspringen is in regel 1,2,3,4,5, enz…, corrigeert u die regel natuurlijk heen en weer.

Als u echter nog steeds problemen krijgt met het programma dat gerelateerd is aan het typen van fouten, operators, enz., Zorg ervoor dat u leest waarom Fout Python aan u schreeuwt:

Het eerste ding om te controleren is dat je je hebt
inkeping goed.
Als je dat doet, controleer dan of je het hebt
Gemengde tabbladen met spaties in uw code.

Onthoud: de code
Ziet er goed uit (voor jou), maar de tolk weigert het te draaien. Indien
U vermoedt dit, een snelle oplossing is om uw code in een
Inactief bewerken venster en kies vervolgens Bewerken … “Selecteer alles van de
Menu-systeem, voordat u het formaat kiest … “Onbespechtend gebied.
Als je met spaties gemengd bent, zal dit al je converteren
tabbladen naar ruimtes in één keer (en fixeer eventuele inkepingsproblemen).


Antwoord 9

Ik kon geen oplossing vinden voor wat ik op zoek was, dus heb ik een aantal aangepaste functies gemaakt. Je kunt ze uitproberen.

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

Antwoord 10

Als u het opgegeven aantal spaties van links en rechts wilt inkorten, kunt u dit doen:

def remove_outer_spaces(text, num_of_leading, num_of_trailing):
    text = list(text)
    for i in range(num_of_leading):
        if text[i] == " ":
            text[i] = ""
        else:
            break
    for i in range(1, num_of_trailing+1):
        if text[-i] == " ":
            text[-i] = ""
        else:
            break
    return ''.join(text)
txt1 = "   MY name is     "
print(remove_outer_spaces(txt1, 1, 1))  # result is: "  MY name is    "
print(remove_outer_spaces(txt1, 2, 3))  # result is: " MY name is  "
print(remove_outer_spaces(txt1, 6, 8))  # result is: "MY name is"

Antwoord 11

Hoe verwijder ik voorloop- en volgspaties uit een tekenreeks in Python?

Dus onderstaande oplossing verwijdert voorloop- en volgspaties evenals tussenliggende witruimten. Like als je duidelijke tekenreekswaarden nodig hebt zonder meerdere spaties.

>>> str_1 = '     Hello World'
>>> print(' '.join(str_1.split()))
Hello World
>>>
>>>
>>> str_2 = '     Hello      World'
>>> print(' '.join(str_2.split()))
Hello World
>>>
>>>
>>> str_3 = 'Hello World     '
>>> print(' '.join(str_3.split()))
Hello World
>>>
>>>
>>> str_4 = 'Hello      World     '
>>> print(' '.join(str_4.split()))
Hello World
>>>
>>>
>>> str_5 = '     Hello World     '
>>> print(' '.join(str_5.split()))
Hello World
>>>
>>>
>>> str_6 = '     Hello      World     '
>>> print(' '.join(str_6.split()))
Hello World
>>>
>>>
>>> str_7 = 'Hello World'
>>> print(' '.join(str_7.split()))
Hello World

Zoals je kunt zien, verwijdert dit alle meervoudige witruimte in de tekenreeks (uitvoer is Hello Worldvoor iedereen). Locatie maakt niet uit. Maar als je echt voorloop- en volgspaties nodig hebt, dan zou strip()vinden zijn.


Antwoord 12

Ik wilde de te veel spaties in een string verwijderen (ook tussen de string, niet alleen aan het begin of einde). Ik heb dit gemaakt, omdat ik niet weet hoe ik het anders moet doen:

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)

Dit vervangt dubbele spaties in één spatie totdat u geen dubbele spaties meer heeft

Other episodes