2017-06-16 1 views
0

Wie kann ich die folgende Python-Code in eine Funktion setzenHinzufügen Python Streifen Befehle in eine Funktion

[x.strip('\n') for x in list] 
    [x.strip(' ') for x in list] 
    [x.strip('\n') for x in list] 

Ich habe versucht, die folgenden, aber es war nicht direkt einem der cleanings

def cleanup(list): 
    [x.strip('\n') for x in list] 
    [x.strip(' ') for x in list] 
    [x.strip('\n') for x in list] 
    return 

über Bereinigungs (horsename)

+1

Sie müssen tatsächlich etwas von Ihrer Funktion zurückgeben. Dein 'return' wie es ist, gibt gerade nichts zurück. Es gibt tatsächlich keine zurück. Was Sie wahrscheinlich tun sollten, ist das "Reinigen" in einigen var wie "res" zu speichern und dann "res" zurückzugeben. Verwenden Sie keine Variablennamen wie 'liste', da Sie die eingebaute' liste' überschatten. – idjaw

+1

Warum ist es Ihrer Meinung nach notwendig, [x.strip ('\ n') für x in num] 'einer Variablen in einem Fall, aber nicht in einem anderen zuzuordnen? Tipp: Nur einer davon ist korrekt. – jwodder

+0

* "Wie lege ich den folgenden Python-Code in eine Funktion" * - aber dann fügen Sie * anderen * Code in eine Funktion. – mkrieger1

Antwort

2

Sie genannt könnten Sie

def cleanup(list): 
    return [x.strip('\n').strip(" ").strip("\n") for x in list] 
schreiben

Vielleicht, man kann es tatsächlich schreibt kürzer (Vorsicht, es ist semantisch verschieden):

def cleanup(list): 
    return [x.strip('\n ') for x in list] 

Das funktioniert, weil strip alle Zeichen in der Zeichenfolge entfernt von links und rechts, die Sie in der Zeichenfolge übergeben.

Bearbeiten - Semantische Unterschied:

ist dies mit einem Beispiel Lassen Sie illustrieren:

>>> s="\n \n r \n \n" 
>>> s.strip('\n').strip(" ").strip("\n") 
' r ' 
>>> s.strip('\n ') 
'r' 

Die erste Version entfernt zunächst alle \n von links und rechts, dann aus dem resultierenden String ganzen Raum von links und rechts und aus dieser resultierenden Zeichenfolge alle \n. Die zweite Version entfernt alle \n und Leerzeichen von links und rechts. Wenn sie sich oft genug abwechseln wie im Beispiel, macht es einen Unterschied.

+0

Wie unterscheiden sich diese semantisch genau? –

+0

perfekt danke :) –

+0

@ JonClements: Ich habe eine Erklärung über den semantischen Unterschied hinzugefügt. –