split bei jedem 2. Zeitlenumbruch?

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
dave
User
Beiträge: 3
Registriert: Dienstag 21. Juni 2005, 05:43

Montag 27. Juni 2005, 12:19

Hi folks,

wie lässt sich bei einem string ein split() bei jedem zweiten Zeilenumbruch realisieren?

--dave
Benutzeravatar
jens
Moderator
Beiträge: 8482
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Montag 27. Juni 2005, 12:28

Ich könnte mir vorstellen, das man das vielleicht mit einem re.split machen könnte...
Oder mach dir eine for-Schleife...

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
XT@ngel als Gast

Montag 27. Juni 2005, 15:20

Ich bin mir nicht sicher on ich die Frage jetzt richtig verstanden habe..

Code: Alles auswählen

fd = file("test.txt")
c = 0
for line in fd.readlines():
    if c % 2:
        print line.split()
    else:
        print line
    c = c + 1
MfG
Andreas
mawe
Python-Forum Veteran
Beiträge: 1209
Registriert: Montag 29. September 2003, 17:18
Wohnort: Purkersdorf (bei Wien [Austria])

Montag 27. Juni 2005, 16:51

Hi!

Code: Alles auswählen

text ="""hello
you
fools
how
about
this"""
splitted = text.split("\n")
liste = ["\n".join(splitted[i:i+2]) for i in range(0,len(splitted),2)]
print liste
:)

Gruß, mawe
Benutzeravatar
jens
Moderator
Beiträge: 8482
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Montag 27. Juni 2005, 17:48

Und meine Variante:

Code: Alles auswählen

import re

txt = """1. Zeile
2. Zeile
3. Zeile
4. Zeile
5. Zeile
6. Zeile
7. Zeile"""

print re.findall(r"(.*?\n.*?)\n", txt )
Die Ignoriert allerdings die letzte Zeile :( Funktioniert also nur, bei gerader Anzahl...

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
joe

Montag 27. Juni 2005, 17:58

jens hat geschrieben:

Code: Alles auswählen

print re.findall(r"(.*?\n.*?)\n", txt )
Auf exakt die lösung bin ich auch zuerst gekommen. Unschöner Workaround wäre txt+"\n\n".
Ansonsten:

Code: Alles auswählen

print [e for e in re.split(r"(.*\n.*?)\n",txt) if e]
joe
Antworten