Daten zwischen zwei Werten aus txt-Datei selektieren und verarbeiten
Verfasst: Mittwoch 10. Februar 2021, 19:43
Hi in die Runde,
als absoluter Python-Neuling hoffe ich, dass ich hier eine valide Antwort bekomme.
Folgendes:
Habe eine txt.datei mit relativ viel Inhalt und möchte aus dieser Daten via Python selektieren, speichern und anschließend weiterverarbeiten.
Dateiinhalt sieht in etwa so aus:
<id>09212</id><onlinefrom>08.07.2020</onlinefrom><<title>Test Datei</title><longtitle>Test Datei 11.11.2021</longtitle><referenceid>DE-63636</referenceid><city>Berlin</city> ---- usw. es sind auch URLs in der Datei.
Konkret geht es um die Daten zwischen <longtitle> und </longtitle> sowie <city> und </city> - möchte aber die Flexibilität, auch alle anderen Daten zwischen < > und </ > auszuwerten.
Hab hier nun schon einiges ausprobiert (z. B. über pandas, regex, etc.), Videos dazu angeschaut, hier im Forum recherchiert und auch Google ausgequetscht - leider habe ich keine passende Lösung gefunden.
Dann hatte ich diverse Ansätze gefunden:
oder
Der zweite Code funktioniert zwar bei "city" nicht aber z. B. bei "longtitle" - auch wenn ich die Range unten verändere.
Hoffe, ihr könnt mir hier weiterhelfen? Dachte, dass es evtl. daran liegt, dass "title" in unterschiedlichen Schreibweisen mehrfach vorkommt oder eben auch, dass der Text sowohl, str und int enthält?
als absoluter Python-Neuling hoffe ich, dass ich hier eine valide Antwort bekomme.

Folgendes:
Habe eine txt.datei mit relativ viel Inhalt und möchte aus dieser Daten via Python selektieren, speichern und anschließend weiterverarbeiten.
Dateiinhalt sieht in etwa so aus:
<id>09212</id><onlinefrom>08.07.2020</onlinefrom><<title>Test Datei</title><longtitle>Test Datei 11.11.2021</longtitle><referenceid>DE-63636</referenceid><city>Berlin</city> ---- usw. es sind auch URLs in der Datei.
Konkret geht es um die Daten zwischen <longtitle> und </longtitle> sowie <city> und </city> - möchte aber die Flexibilität, auch alle anderen Daten zwischen < > und </ > auszuwerten.
Hab hier nun schon einiges ausprobiert (z. B. über pandas, regex, etc.), Videos dazu angeschaut, hier im Forum recherchiert und auch Google ausgequetscht - leider habe ich keine passende Lösung gefunden.
Dann hatte ich diverse Ansätze gefunden:
Code: Alles auswählen
with open('mod.txt') as text_file:
text = text_file.read()
text = re.search("<city>\.(.*?)</city>", text)
print(repr(text))
Code: Alles auswählen
m = re.compile("<city>[\w]*</city>")
for test in tests:
print(test)
#finde alle (hier nicht notwendig)
iterator = re.finditer(m,test)
for match in iterator:
t = match.span()
print(t)
print(test[t[0]+4:t[1]-4])
Hoffe, ihr könnt mir hier weiterhelfen? Dachte, dass es evtl. daran liegt, dass "title" in unterschiedlichen Schreibweisen mehrfach vorkommt oder eben auch, dass der Text sowohl, str und int enthält?