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

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

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?

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
helduel
User
Beiträge: 300
Registriert: Montag 23. Juli 2007, 14:05
Wohnort: Laupheim

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
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Code: Alles auswählen

map(lambda line: line.strip(), (line for line in data.split('\n')))
derdon
User
Beiträge: 1316
Registriert: Freitag 24. Oktober 2008, 14:32

warum nicht data.splitlines() statt data.split("\n")? Dann ist das vom Betriebssystem unabhängig.
Benutzeravatar
keppla
User
Beiträge: 483
Registriert: Montag 31. Oktober 2005, 00:12

Ich biete

Code: Alles auswählen

lines = data.split("\n")
lines = lines[:1] + [line.strip() for line in lines[1:]]
Benutzeravatar
helduel
User
Beiträge: 300
Registriert: Montag 23. Juli 2007, 14:05
Wohnort: Laupheim

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
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

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 ;)

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Antworten