2016-04-28 6 views
0

Wie kann ich Leerzeichen in Python vonWie reduziere ich Whitespace in Python?

test = ' Good ' zu einzelnen Leerzeichen test = ' Good '

Ich habe versucht, zu reduzieren haben diese Funktion definieren, aber wenn ich zu test = reducing_white(test) versuchen funktioniert es nicht funktioniert, muss es mit dem zu tun, Funktionsrückgabe oder etwas?

counter = [] 

def reducing_white(txt): 
    counter = txt.count(' ') 
    while counter > 2: 
     txt = txt.replace(' ','',1) 
     counter = txt.count(' ') 
     return txt 
+4

Duplizieren von http://stackoverflow.com/questions/2077897/substitute-multiple-whitespace-with-single-whitespace-in-python oder http://stackoverflow.com/questions/1546226/a-simple-way -multiple-spaces-in-string-in-python entfernen? – alecxe

+0

Sie rufen 'return' in der ersten Iteration Ihrer Schleife. Vielleicht wollten Sie diese "Rückkehr" außerhalb Ihrer Schleife platzieren? – larsks

+0

Der Code macht nicht wirklich viel Sinn. Zum einen wird nicht zwischen aufeinanderfolgenden Räumen und isolierten Räumen unterschieden. –

Antwort

0

Hier ist, wie ich es gelöst:

def reduce_ws(txt): 
    ntxt = txt.strip() 
    return ' '+ ntxt + ' ' 

j = ' Hello World  ' 
print(reduce_ws(j)) 

OUTPUT:

'Hallo Welt'

0

Sie müssen reguläre Ausdrücke verwenden:

import re 

re.sub(r'\s+', ' ', test) 
>>>> ' Good ' 

test = '  Good Sh ow  ' 
re.sub(r'\s+', ' ', test) 
>>>> ' Good Sh ow ' 

r'\s+' stimmt mit allen multiplen Leerzeichen überein und ersetzt die gesamte Sequenz durch ' ', d. H. Ein einzelnes Leerraumzeichen.

Diese Lösung ist ziemlich leistungsfähig und funktioniert bei jeder Kombination mehrerer Räume.

Verwandte Themen