Python liste schneiden und aus dieser eine weitere liste erstellen?

...komplette Frage anzeigen

2 Antworten

So gehst Du zeilenweise über die Daten:

for line in open("data.txt") ...

So extrahierst Du den letzten Teil einer Zeile:

br = line.rsplit('\\\\t', 1)[-1]

So zerlegst Du die Klammer-Texte in eine Liste:

br_list = br.strip(')(').split(')(')

Der String ")(" als einziges Argument sieht schon etwas komisch aus; vielleicht hilft's, wenn man dafür extra eine Variable anlegt:

delim = ')('
br_list = br.strip(delim).split(delim)

Und jetzt alles zusammen:

alle_br = [ line.rsplit('\\\\t', 1)[-1].strip(')(').split(')(')
 for line in open("data.txt") ]

Alles natürlich ungetestet und ohne Gewähr!

Antwort bewerten Vielen Dank für Deine Bewertung
nilsiscool 05.02.2016, 09:10

Erstmal danke für deine Antwort. Beim dritten code komme ich nicht weiter. er zeigt mir an, dass list kein attribut strip oder split beinhaltet.

er versucht ja auch eine Liste zu splitten und zu strippen, das kann er doch aber nur mit strings oder?

0
ralphdieter 05.02.2016, 13:56
@nilsiscool

line.rsplit() liefert eine Liste von Strings. [-1] nimmt daraus das letzte Element. Das sollte eigentlich wieder ein String sein.

0
ralphdieter 05.02.2016, 14:14
@nilsiscool

Ach ja: Du brauchst nur die letzte Zeile (alle_br=...). Die Zeilen davor dienen bloß zur Erklärung.

0
TeeTier 05.02.2016, 11:12

Schicke Lösung, genau mein Gedankengang! :)

Ich hatte schon befürchtet, dass hier nur wieder RegExen oder die Zeichenweise Abarbeitung mittels Schleifen zum Einsatz kommen.

0

Könnte dir das im Java code anbieten (ob das richtig ist weiß ich nicht kann sein das ich nen Denkfehler hatte), dann könntest du ihn dir vielleicht in den Python-code umschreiben.

String DeinText="01.0.20.16 15:30 Max Meyer (Golf7/Golf6)(AudiTT)(Mercedes C Klasse)..............";
int g,d,f=0;
List list1 = new ArrayList();
String[] beispiel = new String[400];

for (int i=0;i<DeinText.length;i++)
{
do {
if(DeinText.charAt(i)!="(")
{i++;}
else
{i++; d++;}
}while (d!=1);
d=0;
do {
if(DeinText.charAt(g)!=")")
{g++;}
else
{g++;d++;}
}while (d!=1);
beispiel[f]=DeinText.substring(i,g);
list1.add(beispiel[f]);
d=0;
i=g;
g=g++;
System.out.println(list1.get(beispiel[f]));
f++;
}

PS: Hab das nicht überprüft keine Garantie das es klappt. Ich habe mir lediglich etwas überlegt und es in den Editor geschrieben.

PS:PS: Es kann durchaus sein das ich dort nur schwachsinn geschrieben habe. Bitte nehmt es mir nicht übel.

MFG -Rhayn-

Antwort bewerten Vielen Dank für Deine Bewertung

Was möchtest Du wissen?