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')
ofmy_string.lstrip('\n\r')
ofmy_string.rstrip('\n\t')
enzovoort.
Meer details zijn beschikbaar in de docs .
Antwoord 3, Autoriteit 7%
strip
is 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 World
voor 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