Daten zwischen zwei Werten aus txt-Datei selektieren und verarbeiten

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
helloworld1911
User
Beiträge: 5
Registriert: Mittwoch 10. Februar 2021, 19:16

Hi in die Runde,

als absoluter Python-Neuling hoffe ich, dass ich hier eine valide Antwort bekomme. :geek:

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

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])
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?
Sirius3
User
Beiträge: 18274
Registriert: Sonntag 21. Oktober 2012, 17:20

Das ist XML. Und dafür benutzt man einen XML-Parser, wie xml.etree.ElenentTree
helloworld1911
User
Beiträge: 5
Registriert: Mittwoch 10. Februar 2021, 19:16

Super. Das ging schnell. Vielen Dank.
Antworten