Seite 1 von 1

automatisierte Umwandlung von "ersten" in Integer

Verfasst: Sonntag 25. Oktober 2020, 20:43
von JakobPrie
Hallo,
gibt es ein package oder irgendwas in der Art, was einem direkt den integer-Wert aus dem String "ersten"/"zweiten"/... zurückgibt?

Re: automatisierte Umwandlung von "ersten" in Integer

Verfasst: Sonntag 25. Oktober 2020, 20:44
von greetings1
Nein, müsstest ein Wörterbuch anlegen.

Re: automatisierte Umwandlung von "ersten" in Integer

Verfasst: Montag 26. Oktober 2020, 06:42
von sparrow
@JakobPrie: Dafür musst du den entsprechenden Wert aus der Zeichenkette herauslösen?
Was würdest du denn ohne Programm tun?
Schau dir mal die Methoden an, die Zeichenketten haben. Speziell .split() sollte dir im ersten Schritt weiter helfen.

@greertings1: Ein Wörterbuch ist eine Datenstruktur, die die Beziehung zwischen Schlüsseln und Werten darstellt. Ich sehe nicht, wo das hier hilft.

Re: automatisierte Umwandlung von "ersten" in Integer

Verfasst: Montag 26. Oktober 2020, 07:25
von Sirius3
@sparrow: soweit ich das verstanden habe, enthält der String schon nur das Wort "ersten". Dann wäre ein Wörterbuch der erste Schritt. Wenn der OP aber auch den dreimillionensiebenhundertdreiundfünfzigtausendvierundachzigsten haben möchte, wird das mit einem Wörterbuch schwierig.

Re: automatisierte Umwandlung von "ersten" in Integer

Verfasst: Montag 26. Oktober 2020, 09:07
von sparrow
Hmm... ok.
Ich habe das so verstanden, dass es eine Zeichenkette gibt, deren Elemente Zahlen sind und die durch "/" getrennt sind - und davon möchte @JakobPrie den ersten haben.

Re: automatisierte Umwandlung von "ersten" in Integer

Verfasst: Montag 26. Oktober 2020, 14:47
von greetings1
sparrow hat geschrieben: Montag 26. Oktober 2020, 06:42 @greertings1: Ein Wörterbuch ist eine Datenstruktur, die die Beziehung zwischen Schlüsseln und Werten darstellt. Ich sehe nicht, wo das hier hilft.
Dann lies den Beitrag noch mal... String gegeben, int gewünscht - und zumindest die ersten zehn Zahlen sind aus dem String nicht ableitbar -> Wörterbuch.

Ansonsten kannst du auch gerne ein mathematisches Kunststück vollführen und "drei, "vier", "eins" in Zahlen umwandeln. Bin gespannt.

Re: automatisierte Umwandlung von "ersten" in Integer

Verfasst: Mittwoch 28. Oktober 2020, 17:24
von JakobPrie
Also tatsächlich möchte ich eine x-beliebige Zahl, die als String gegeben ist in einen int umwandeln, also auch fünfmillionendreihunderttausendundfünf. Ich habe jetzt mal nen Algorithmus für alle Zahlen bis Hundert gemacht

Re: automatisierte Umwandlung von "ersten" in Integer

Verfasst: Donnerstag 29. Oktober 2020, 08:36
von Jankie
Mit third-party modulen:

Code: Alles auswählen

from word2number import w2n
import goslate

def translate_to_english(word):
    return goslate.Goslate().translate(word, 'eng')

def main():
    print(w2n.word_to_num(translate_to_english(input("Gib die Zahl ein die umgewandelt werden soll: "))))

if __name__ == '__main__':
    main()
Leider ist der Spaß nur von kurzer Dauer, da goslate einen HTTPError (HTTP Error 429: Too Many Requests) wirft (der Grund dafür steht auch auf der goslate Seite), auch bei wenigen Anfragen. Bei mir hat es Anfangs aber geklappt. Man muss allerdings statt "fünfmillionendreihunderttausendundfünf" das so eingeben "fünfmillionendreihunderttausend und fünf".

Kennt jemand ein gutes Modul zum Übersetzen von Deutsch nach Englisch, eventuell könnte es damit klappen?

Re: automatisierte Umwandlung von "ersten" in Integer

Verfasst: Donnerstag 29. Oktober 2020, 08:52
von sparrow
Das ist nicht ganz trivial und hat mit der relativen Komplexität der deutschen Sprache zu tun. Das wird auch aus den Posts von JakobPrie deutlich.
Im ersten Post wird nach "ersten" oder "zweiten" gefragt. "ersten" ist aber keine einfach Zahl als Zeichenkette sondern ein Zahlwort bzw. die Ordinalzahl zu "Eins". Und das könnte auch "erste", "erstes" oder "erster" heißen.
Möglicherweise soll auch das Adverb "erstens" noch berücksichtigt werden. "erstehen" aber sicher nicht und "erstechen" auch nicht.
Sicher nicht weniger trivial als das Auseinanderflücken einer Zeichenkette die eine Zahl direkt audrückt.

Re: automatisierte Umwandlung von "ersten" in Integer

Verfasst: Donnerstag 29. Oktober 2020, 09:38
von DeaD_EyE
Das ist ambitioniert, könnte dir aber beim Verständnis der Muttersprache helfen.
Dennoch ist es nicht einfach das zu programmieren. Fang erst mal mit römischen Zahlen an.
Das ist einfacher.

Re: automatisierte Umwandlung von "ersten" in Integer

Verfasst: Donnerstag 29. Oktober 2020, 13:40
von Jankie
Habe eine Möglichkeit gefunden:

Code: Alles auswählen

import requests
from word2number import w2n

HEADERS = {"User-Agent":"Mozilla/5.0 (Windows NT 6.1; WOW64; rv:44.0) Gecko/20100101 Firefox/44.0"}


def translate_to_english(word):
    return requests.get(f"https://api.mymemory.translated.net/get?q={word}&langpair=de|en", headers=HEADERS).json()["responseData"]["translatedText"]


def main():
    while True:
        try:
            print(w2n.word_to_num(translate_to_english(input("Gib die Zahl ein die umgewandelt werden soll: "))))
        except ValueError:
            print("Diese Zahl kann nicht umgewandelt werden")

if __name__ == '__main__':
    main()

>> Gib die Zahl ein die umgewandelt werden soll: Fünfmillionendreihunderfünfundzwanzigtausendundelf
>> Ausgabe: 5325011

>> Gib die Zahl ein die umgewandelt werden soll: Neunundfünfzigtausenddreihundertzweiundzwanzig
>> Ausgabe: 59322

>> Gib die Zahl ein die umgewandelt werden soll: Viermilliardenvierhundertvierundvierzigmillionenvierhundervierundvierzigtausendvierhundereinundvierzig
>> Ausgabe: 4444444441