Wie entferne ich führende und nachgestellte Leerzeichen aus einer Zeichenkette in Python?
" Hello world " --> "Hello world"
" Hello world" --> "Hello world"
"Hello world " --> "Hello world"
"Hello world" --> "Hello world"
Wie entferne ich führende und nachgestellte Leerzeichen aus einer Zeichenkette in Python?
" Hello world " --> "Hello world"
" Hello world" --> "Hello world"
"Hello world " --> "Hello world"
"Hello world" --> "Hello world"
Wenn ich diesen Thread als Anfänger sehe, wird mir ganz schwindelig. Daher kam mit einer einfachen Abkürzung.
Obwohl str.strip() entfernt führende und nachgestellte Leerzeichen ändert nichts an den Leerzeichen zwischen den Zeichen.
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
Stattdessen str.replace() verwenden mehr Sinn, weniger Fehler und mehr auf den Punkt zu bringen. Der folgende Code kann die Verwendung von str.replace() verallgemeinern
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)
Kann beim Vererben desselben in verschiedenen Funktionen hilfreich sein.
Um "Whitespace" zu entfernen, das viele Einrückungsfehler verursacht, wenn Sie Ihren fertigen Code oder Programme in Pyhton ausführen. Tun Sie einfach das Folgende; offensichtlich, wenn Python hält sagen, dass der Fehler (s) ist Einrückung in Zeile 1,2,3,4,5, etc..., nur fix, dass Zeile hin und her.
Wenn Sie jedoch immer noch Probleme mit dem Programm haben, die mit Tippfehlern, Operatoren usw. zusammenhängen, sollten Sie unbedingt lesen, warum Python Sie anschreit:
Als erstes sollten Sie überprüfen, ob Sie Ihre Einrückung richtig ist. Wenn ja, dann prüfen Sie, ob Sie Tabulatoren mit Leerzeichen in Ihrem Code vermischt haben.
Denken Sie daran: Der Code sieht (für Sie) gut aus, aber der Interpreter weigert sich, ihn auszuführen. Wenn Sie dies vermuten, können Sie Ihren Code schnell in einem IDLE-Editierfenster zu bringen, dann wählen Sie Bearbeiten... "Alles auswählen aus dem wählen, bevor Sie Format... "Region enttabuisieren" wählen. Wenn Sie Tabulatoren mit Leerzeichen gemischt haben, werden dadurch alle Tabulatoren auf einmal in Leerzeichen um (und beheben alle Einrückungsprobleme).
Ich konnte keine Lösung für das, was ich suchte, finden, 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)))
Wenn Sie möchten, dass Abschneiden der angegebenen Anzahl von Leerzeichen von links und rechts könnten Sie dies tun:
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"
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.