Python zahlen sortieren?

MrAmazing2  24.06.2022, 15:41

Kannst du mal ein Beispiel für eine solche "Liste mit Text und Zahlen dazwischen" ergänzen?
So, oder wie?
["abc123de", "abcd12 345efg", "1ab2cd22456ef"]

Mario81739 
Fragesteller
 24.06.2022, 16:16

Ist so ein Katalog den ich mit Tesseract in Text umgewandelt habe. Bsp.:

Artikel 50 126 in Größe XS bis XL

Und ich möchte jetzt nur die Nummer 50 126 herausfiltern

1 Antwort

Von Experte mihisu bestätigt

Falls garantiert in jedem String deiner Liste eine solche Zahl vorkommt könntest du sie so extrahieren:

import re

input = ["Artikel 50 126 in Größe XS bis XL", "Artikel 54 112 in Größe XS bis XL"]
articles = [re.search(r".*(\d\d \d\d\d).*", article).group(1) for article in input]

print(articles) # Ausgabe hier: ['50 126', '54 112']

Falls das nicht garantiert ist könnte man noch folgenden Filter beim for einbauen:

articles = [re.search(r".*(\d\d \d\d\d).*", article).group(1) for article in input if re.match(".*\d\d \d\d\d.*", article)]
Woher ich das weiß:Hobby – Programmieren ist mein Hobby & Beruf

BlueX15  24.06.2022, 21:49

Das \d steht für einen Integer? Ich blicke irgendwie durch Regex nicht durch, hast du vielleicht ein gutes Tutorial scheint ja echt ein sehr starkes Tool zu sein habe schon auf Websiten gelesen aber so ganz verstehe ich den syntax nicht

1
MrAmazing2  24.06.2022, 22:02
@BlueX15

Das \d steht für "Digit", also eine einzelne Ziffer

.* bedeutet beliebig viele andere Zeichen

Ich hab Regex durch YouTube Videos gelernt

Diese Seite kann ich dir empfehlen, um Regex auszuprobieren: regex101.com/

Wenn du da mein .*(\d\d \d\d\d).* eingibst und mit der Maus über die einzelnen Teile gehst, siehst du, was jeder Teil macht

2
BlueX15  24.06.2022, 22:05
@MrAmazing2

Mega probier ich aus sobald ich wieder am PC bin vielen Dank ^^

2