Seite 1 von 1

list[1:].strip() - Einfachere Lösung gesucht.

Verfasst: Donnerstag 27. November 2008, 17:05
von jens
Das kommt mir sehr umständlich vor:

Code: Alles auswählen

# -*- coding: utf-8 -*-

def strip_ex_second(data):
    """
    >>> strip_ex_second("  eins\\n  zwei\\n  drei")
    ['  eins', 'zwei', 'drei']
    """
    lines = [line for line in data.split("\n")]
    for index, line in enumerate(lines):
        if index==0:
            continue
        lines[index] = line.strip()

    return lines


if __name__ == "__main__":
    import doctest
    doctest.testmod()
Bessere Lösung?

Verfasst: Donnerstag 27. November 2008, 17:27
von helduel
Moin,

data.split liefert schon eine Liste, da brauchst du keine LC. Ansonsten würde ich das so machen:

Code: Alles auswählen

def strip_ex_second(data):
    lines = list()
    for index, line in enumerate(data.split("\n")):
        if index > 0:
            line = line.strip()
        lines.append(line)
    return lines
Gruß,
Manuel

Verfasst: Donnerstag 27. November 2008, 17:29
von DasIch

Code: Alles auswählen

map(lambda line: line.strip(), (line for line in data.split('\n')))

Verfasst: Donnerstag 27. November 2008, 17:31
von derdon
warum nicht data.splitlines() statt data.split("\n")? Dann ist das vom Betriebssystem unabhängig.

Verfasst: Donnerstag 27. November 2008, 17:31
von keppla
Ich biete

Code: Alles auswählen

lines = data.split("\n")
lines = lines[:1] + [line.strip() for line in lines[1:]]

Verfasst: Donnerstag 27. November 2008, 17:37
von helduel
Noch ne Variante:

Code: Alles auswählen

def strip_ex_second(data):
    return [line.strip() if index > 0 else line
            for index, line in enumerate(data.splitlines())]
Gruß,
Manuel

Verfasst: Donnerstag 27. November 2008, 17:50
von jens
helduel hat geschrieben:data.split liefert schon eine Liste, da brauchst du keine LC.
Ja, das ist ein Fehler, vorher hab ich da alle Einträge mit einem .strip() versehen, deswegen die LC.

@keppla: Deine Lösung sieht bisher am schönsten aus, ich denke die werde ich erstmal nehmen ;)