Etikettensuchen mit Python (Etikettensuchen mit Python), Spiel, Seite 724504
https://www.purl.org/stefan_ram/pub/etikettensuchen_py (Permalink) ist die kanonische URI dieser Seite.
Stefan Ram
Python-Kurs (leicht)

Etikettensuchen

Wenn in den eckigen Klammern hinter einem Text zwei Positionen angegeben werden, die durch einen Doppelpunkt getrennt sind, dann steht dies für den Teil des Textes, der bei der ersten Position (einschließlich) beginnt und bei der zweiten Position (ausschließlich) endet. Dabei hat das erste Zeichen des Textes die Position »0« (Null).

Zauberrolle

from collections import *
from datetime import *
from itertools import *
from random import *
from re import *
from time import *
from timeit import *
from turtle import *
from winsound import *

t = '''abcdefghi'''
x = '''012345678'''

s = 3
f = 5

l = t[ s : f ]

print( l )

Protokoll
de

Aus einer Textnachricht mit Wetterinformationen soll die Luftdruckangabe (beispielsweise »1011.7«) extrahiert werden. Während der Text » hPa Luftdruck« hinter dem Luftdruck immer gleich ist und der Luftdruck immer am Zeilenanfang beginnt, kann sich die Anzahl der Ziffern des Luftdrucks oder die Reihenfolge der Zeilen ändern. (Jedoch beginnt der Text immer mit dem Zeichen »\n«, das hier als „Beginn der Zeile“ interpretiert wird.)

Durch »a = 0« wird »a« auf die Position des Anfangs des Textes, also auf »0«, gesetzt.

Wir suchen mit »f = t.find( e, a )« zunächst nach dem ersten Vorkommen des Etiketts »e« (also nach dem ersten Vorkommen von » hPa Luftdruck«) ab der Position »a« im Text »t«. Danach enthält »f« die Position des Etiketts »e« (also von » hPa Luftdruck«) innerhalb des Textes »t«.

Anschließend suchen wir mit »z = t.rfind( '\n', a, f )« nach dem letzten Vorkommen des Beginns »b« einer Zeile (also von »\n«) innerhalb des Bereichs vom Textanfang »0« bis zur Fundstelle »f« des Etiketts.

Die Luftdruckangabe (also »1011.7«) beginnt dann bei der Position »s«, die sich direkt hinter  der Position »z« des zuvor gefundenen Zeilenendes befindet, daher schreiben wir also »s = z + 1«.

Der Luftdruck »l« beginnt dann also bei Position »s« (einschließlich) und endet bei der Position »f« des ihm direkt folgenden Etiketts (ausschließlich), daher: »l = t[ s : f ]«.

Zauberrolle

from collections import *
from datetime import *
from itertools import *
from random import *
from re import *
from time import *
from timeit import *
from turtle import *
from winsound import *

t = '''
23.3 °C Temperatur
89 % Luftfeuchtigkeit
1011.7 hPa Luftdruck
4 m/s Windgeschwindigkeit
'''

a = 0
e = ' hPa Luftdruck'
b = '\n'

f = t.find( e, a )
z = t.rfind( b, a, f )
s = z + 1

l = t[ s : f ]

print( l )

Protokoll
1011.7

Das vorgestellte Verfahren liefert auch dann weiterhin das richtige Ergebnis, wenn die Länge der Zahl und die Reihenfolge der Zeilen verändert wird.

Zauberrolle

from collections import *
from datetime import *
from itertools import *
from random import *
from re import *
from time import *
from timeit import *
from turtle import *
from winsound import *

t = '''
23.3 °C Temperatur
4.8 hPa Luftdruck
89 % Luftfeuchtigkeit
4 m/s Windgeschwindigkeit
'''

a = 0
e = ' hPa Luftdruck'
b = '\n'

f = t.find( e, a )
z = t.rfind( b, a, f )
s = z + 1

l = t[ s : f ]

print( l )

Protokoll
4.8

Wir nehmen nun an, daß das Etikett »Luftdruck in hPa: « sich immer vor  der Luftdruckangabe befindet. Ergänzen Sie die Zauberrolle so, daß sie die dahinter befindliche Luftdruckangabe ausgibt. Ihr Verfahren sollte möglichst auch dann noch das richtige Ergebnis liefern, wenn der Zahlenwert oder die Reihenfolge der Zeilen sich ändert.

Zauberrolle

from collections import *
from datetime import *
from itertools import *
from random import *
from re import *
from time import *
from timeit import *
from turtle import *
from winsound import *

t = '''
Temperatur in °C: 23.3
Luftfeuchtigkeit in %: 89
Luftdruck in hPa: 1011.7
Windgeschwindigkeit in m/s: 4
'''

Protokoll

 

Seiteninformationen und Impressum   |   Mitteilungsformular  |   "ram@zedat.fu-berlin.de" (ohne die Anführungszeichen) ist die Netzpostadresse von Stefan Ram.   |   Eine Verbindung zur Stefan-Ram-Startseite befindet sich oben auf dieser Seite hinter dem Text "Stefan Ram".)  |   Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram. Schlüsselwörter zu dieser Seite/relevant keywords describing this page: Stefan Ram Berlin slrprd slrprd stefanramberlin spellched stefanram724504 stefan_ram:724504 Etikettensuchen mit Python Stefan Ram, Berlin, and, or, near, uni, online, slrprd, slrprdqxx, slrprddoc, slrprd724504, slrprddef724504, PbclevtugFgrsnaEnz Erklärung, Beschreibung, Info, Information, Hinweis,

Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram.
https://www.purl.org/stefan_ram/pub/etikettensuchen_py