Information durch Python ablesen

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
SerBlack
User
Beiträge: 41
Registriert: Freitag 31. März 2017, 11:45

Guten Morgen Pythonnutzer,

nach langer Zeit fange ich wieder mit Python an, habe jedoch das meiste vergessen. Mein Zeil ist es aus einer Datei wichtige Daten auszulesen, die dann angezeigt werden soll. (Habe leider keine Ahnung wie ich damit anfangen soll).

Beispiel:
[codebox=xml file=Unbenannt.xml]<?xml version="1.0" encoding="UTF-8"?>
<TrainingCenterDatabase
xsi:schemaLocation="http://www.garmin.com/xmlschemas/Traini ... atabase/v2 http://www.garmin.com/xmlschemas/Traini ... basev2.xsd"
xmlns:ns5="http://www.garmin.com/xmlschemas/ActivityGoals/v1"
xmlns:ns3="http://www.garmin.com/xmlschemas/ActivityExtension/v2"
xmlns:ns2="http://www.garmin.com/xmlschemas/UserProfile/v2"
xmlns="http://www.garmin.com/xmlschemas/Traini ... atabase/v2"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ns4="http://www.garmin.com/xmlschemas/ProfileExtension/v1">
<Activities>
<Activity Sport="Running">
<Id>2018-01-22T10:04:37.000Z</Id>
<Lap StartTime="2018-01-22T10:04:37.000Z">
<TotalTimeSeconds>367.0</TotalTimeSeconds>
<DistanceMeters>311.01</DistanceMeters>
<MaximumSpeed>2.1649999618530273</MaximumSpeed>
<Calories>19</Calories>
<Intensity>Active</Intensity>
<TriggerMethod>Manual</TriggerMethod>
<Track>
<Trackpoint>
<Time>2018-01-22T10:04:37.000Z</Time>
<DistanceMeters>0.0</DistanceMeters>
<Extensions>
<ns3:TPX>
<ns3:Speed>0.0</ns3:Speed>
<ns3:RunCadence>0</ns3:RunCadence>
</ns3:TPX>
</Extensions>
</Trackpoint>
<Trackpoint>
<Time>2018-01-22T10:05:16.000Z</Time>
<DistanceMeters>20.329999923706055</DistanceMeters>
<Extensions>
<ns3:TPX>
<ns3:Speed>1.5399999618530273</ns3:Speed>
<ns3:RunCadence>59</ns3:RunCadence>
</ns3:TPX>
</Extensions>
</Trackpoint>
<Trackpoint>
<Time>2018-01-22T10:05:29.000Z</Time>
<DistanceMeters>40.4900016784668</DistanceMeters>
<Extensions>
<ns3:TPX>
<ns3:Speed>1.5399999618530273</ns3:Speed>
<ns3:RunCadence>47</ns3:RunCadence>
</ns3:TPX>
</Extensions>
</Trackpoint>
<Trackpoint>
<Time>2018-01-22T10:05:43.000Z</Time>
<DistanceMeters>61.130001068115234</DistanceMeters>
<Extensions>
<ns3:TPX>
<ns3:Speed>1.399999976158142</ns3:Speed>
<ns3:RunCadence>45</ns3:RunCadence>
</ns3:TPX>
</Extensions>
</Trackpoint>
<Trackpoint>
<Time>2018-01-22T10:06:04.000Z</Time>
<DistanceMeters>81.83000183105469</DistanceMeters>
<Extensions>
<ns3:TPX>
<ns3:Speed>1.5859999656677246</ns3:Speed>
<ns3:RunCadence>49</ns3:RunCadence>
</ns3:TPX>
</Extensions>
</Trackpoint>
<Trackpoint>
<Time>2018-01-22T10:06:18.000Z</Time>
<DistanceMeters>103.26000213623047</DistanceMeters>
<Extensions>
<ns3:TPX>
<ns3:Speed>1.465000033378601</ns3:Speed>
<ns3:RunCadence>49</ns3:RunCadence>
</ns3:TPX>
</Extensions>
</Trackpoint>
<Trackpoint>
<Time>2018-01-22T10:06:33.000Z</Time>
<DistanceMeters>124.05999755859375</DistanceMeters>
<Extensions>
<ns3:TPX>
<ns3:Speed>1.3339999914169312</ns3:Speed>
<ns3:RunCadence>0</ns3:RunCadence>
</ns3:TPX>
</Extensions>
</Trackpoint>
<Trackpoint>
<Time>2018-01-22T10:07:01.000Z</Time>
<DistanceMeters>144.6300048828125</DistanceMeters>
<Extensions>
<ns3:TPX>
<ns3:Speed>1.4459999799728394</ns3:Speed>
<ns3:RunCadence>59</ns3:RunCadence>
</ns3:TPX>
</Extensions>
</Trackpoint>
<Trackpoint>
<Time>2018-01-22T10:07:27.000Z</Time>
<DistanceMeters>164.8800048828125</DistanceMeters>
<Extensions>
<ns3:TPX>
<ns3:Speed>1.5490000247955322</ns3:Speed>
<ns3:RunCadence>59</ns3:RunCadence>
</ns3:TPX>
</Extensions>
</Trackpoint>
<Trackpoint>
<Time>2018-01-22T10:07:55.000Z</Time>
<DistanceMeters>185.1300048828125</DistanceMeters>
<Extensions>
<ns3:TPX>
<ns3:Speed>1.437000036239624</ns3:Speed>
<ns3:RunCadence>53</ns3:RunCadence>
</ns3:TPX>
</Extensions>
</Trackpoint>
<Trackpoint>
<Time>2018-01-22T10:09:00.000Z</Time>
<DistanceMeters>205.32000732421875</DistanceMeters>
<Extensions>
<ns3:TPX>
<ns3:Speed>1.5859999656677246</ns3:Speed>
<ns3:RunCadence>61</ns3:RunCadence>
</ns3:TPX>
</Extensions>
</Trackpoint>
<Trackpoint>
<Time>2018-01-22T10:09:13.000Z</Time>
<DistanceMeters>225.5800018310547</DistanceMeters>
<Extensions>
<ns3:TPX>
<ns3:Speed>1.4839999675750732</ns3:Speed>
<ns3:RunCadence>51</ns3:RunCadence>
</ns3:TPX>
</Extensions>
</Trackpoint>
<Trackpoint>
<Time>2018-01-22T10:09:36.000Z</Time>
<DistanceMeters>245.75999450683594</DistanceMeters>
<Extensions>
<ns3:TPX>
<ns3:Speed>1.4739999771118164</ns3:Speed>
<ns3:RunCadence>59</ns3:RunCadence>
</ns3:TPX>
</Extensions>
</Trackpoint>
<Trackpoint>
<Time>2018-01-22T10:10:01.000Z</Time>
<DistanceMeters>266.3900146484375</DistanceMeters>
<Extensions>
<ns3:TPX>
<ns3:Speed>1.5399999618530273</ns3:Speed>
<ns3:RunCadence>0</ns3:RunCadence>
</ns3:TPX>
</Extensions>
</Trackpoint>
<Trackpoint>
<Time>2018-01-22T10:10:20.000Z</Time>
<DistanceMeters>286.7200012207031</DistanceMeters>
<Extensions>
<ns3:TPX>
<ns3:Speed>1.4739999771118164</ns3:Speed>
<ns3:RunCadence>57</ns3:RunCadence>
</ns3:TPX>
</Extensions>
</Trackpoint>
<Trackpoint>
<Time>2018-01-22T10:10:38.000Z</Time>
<DistanceMeters>308.0799865722656</DistanceMeters>
<Extensions>
<ns3:TPX>
<ns3:Speed>1.4739999771118164</ns3:Speed>
<ns3:RunCadence>0</ns3:RunCadence>
</ns3:TPX>
</Extensions>
</Trackpoint>
<Trackpoint>
<Time>2018-01-22T10:10:44.000Z</Time>
<DistanceMeters>311.010009765625</DistanceMeters>
<Extensions>
<ns3:TPX>
<ns3:Speed>0.0</ns3:Speed>
<ns3:RunCadence>0</ns3:RunCadence>
</ns3:TPX>
</Extensions>
</Trackpoint>
<Trackpoint>
<Time>2018-01-22T10:10:47.000Z</Time>
<DistanceMeters>311.010009765625</DistanceMeters>
<Extensions>
<ns3:TPX>
<ns3:Speed>0.0</ns3:Speed>
<ns3:RunCadence>0</ns3:RunCadence>
</ns3:TPX>
</Extensions>
</Trackpoint>
</Track>
<Extensions>
<ns3:LX>
<ns3:AvgSpeed>0.7799999713897705</ns3:AvgSpeed>
<ns3:AvgRunCadence>28</ns3:AvgRunCadence>
<ns3:MaxRunCadence>114</ns3:MaxRunCadence>
</ns3:LX>
</Extensions>
</Lap>
<Creator xsi:type="Device_t">
<Name>Garmin Forerunner 220</Name>
<UnitId>3880419542</UnitId>
<ProductID>1632</ProductID>
<Version>
<VersionMajor>3</VersionMajor>
<VersionMinor>10</VersionMinor>
<BuildMajor>0</BuildMajor>
<BuildMinor>0</BuildMinor>
</Version>
</Creator>
</Activity>
</Activities>
<Author xsi:type="Application_t">
<Name>Garmin Connect API</Name>
<Build>
<Version>
<VersionMajor>18</VersionMajor>
<VersionMinor>1</VersionMinor>
<BuildMajor>0</BuildMajor>
<BuildMinor>0</BuildMinor>
</Version>
</Build>
<LangID>en</LangID>
<PartNumber>006-D2449-00</PartNumber>
</Author>
</TrainingCenterDatabase>
[/code]
Und ich will ein Programm erstellen welches davon den Speed oder den Distance herausfischt, also abliest und dann am Ende so etwas zeigt:
Distance: xxxx
Speed: xxx
Date: xxxx
Sirius3
User
Beiträge: 17703
Registriert: Sonntag 21. Oktober 2012, 17:20

@SerBlack: ist das jetzt nur eine Ankündigung oder kommt noch eine Frage?
SerBlack
User
Beiträge: 41
Registriert: Freitag 31. März 2017, 11:45

Eher eine Frage, verzeih dass ich das vergessen habe zu erwähnen:
Wie sollte ich am besten anfangen, gibt es ein Befehl wo man es ablesen könnte?

Danke vielmals,
mfg SerBlack
Benutzeravatar
noisefloor
User
Beiträge: 3829
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

das ist eine XML-Datei, die du mit einem passenden XML-Parser parsen und die Daten verarbeiten, extrahieren etc. Python hat das Element Tree Modul an Bord, die allgemeine Empfehlung aber oft, das externe Modul lxml zu nehmen, weil das Modul komfortabler etc. ist.

Gruß, noisefloor
__deets__
User
Beiträge: 14480
Registriert: Mittwoch 14. Oktober 2015, 14:29

Offtopic: wenn ich diesen Namensraumwahnsinn sehe, kommt mir die 90er-Jahre-Java Galle in Schueben hoch... wer denkt sich sowas aus, und glaubt dann auch noch, das waere *gut*?!!?
Sirius3
User
Beiträge: 17703
Registriert: Sonntag 21. Oktober 2012, 17:20

@__deets__: das ist wie mit Namensräumen in Programmiersprachen auch; es erlaubt, dass verschiedene Gruppen unabhängig voneinander ein Format entwickeln können, ohne dass sich Tags in die Quere kommen.
nezzcarth
User
Beiträge: 1631
Registriert: Samstag 16. April 2011, 12:47

__deets__ hat geschrieben:wer denkt sich sowas aus, und glaubt dann auch noch, das waere *gut*?!!?
Im meiner Wahrnehmung nach zunehmend populäreren Linked Data Bereich wird das sehr ausgiebig praktiziert und propagiert. Bei RDF ist es ja quasi Design Prinzip, existierende Namespaces zu kombinieren. Im Vergleich zu einem durchschnittlichen RDF-XML Dokument, sieht das gezeigte eigentlich noch Recht moderat aus. Möglicherweise ist das mit ein Grund, warum Semantic Web Ideen oft als sehr akademisch angesehen werden.
__deets__
User
Beiträge: 14480
Registriert: Mittwoch 14. Oktober 2015, 14:29

Sirius3 hat geschrieben:@__deets__: das ist wie mit Namensräumen in Programmiersprachen auch; es erlaubt, dass verschiedene Gruppen unabhängig voneinander ein Format entwickeln können, ohne dass sich Tags in die Quere kommen.
Ich weiss, wozu das gedacht ist. Ich halte das nur fuer voellig ueberkandidelt. Das ist ein Dokument von GARMIN. Wieviele Gruppen innerhalb von Garmin arbeiten denn daran, eigene Dokumentformate zu entwickeln? Die dann auch noch so feingranular ineinander verzahnt sind? Und die GARMIN firmware in mit dem embedded Core M3 oder was auch laedt dann unabhaengige Libraries, die bei Gelegenheit Tags ausspucken? Das ist doch Bullshit. Da wuerde ein simples Format ala JSON (wegen mir in XML) mit einem Versionsheader reichen, und das war's.

Namspaces haben ihre Berechtigung bei zB HTML mit eingebetteten SVG oder MathML Dokumenten. Oder um bei deiner Analogie zu bleiben: zwei Bibliotheken, die man nebeneinander benutzt.

Sobald zwei Bibliotheken sich kreuzweise aufrufen und voneinander abhaengen, beluegt man sich bezueglich einer konzeptionellen Getrenntheit selbst...

Nachtrag: wenn ich das richtig sehe, sind 3 der namespaces gar nicht verwandt. Ein Hoch auf die Erweiterbarkeit...
Antworten