Hallo,
gibt es ein package oder irgendwas in der Art, was einem direkt den integer-Wert aus dem String "ersten"/"zweiten"/... zurückgibt?
automatisierte Umwandlung von "ersten" in Integer
-
- User
- Beiträge: 51
- Registriert: Donnerstag 22. Oktober 2020, 18:19
Nein, müsstest ein Wörterbuch anlegen.
@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.
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.
@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.
-
- User
- Beiträge: 51
- Registriert: Donnerstag 22. Oktober 2020, 18:19
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.
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
Mit third-party modulen:
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?
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()
Kennt jemand ein gutes Modul zum Übersetzen von Deutsch nach Englisch, eventuell könnte es damit klappen?
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.
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.
- DeaD_EyE
- User
- Beiträge: 1020
- Registriert: Sonntag 19. September 2010, 13:45
- Wohnort: Hagen
- Kontaktdaten:
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.
Dennoch ist es nicht einfach das zu programmieren. Fang erst mal mit römischen Zahlen an.
Das ist einfacher.
sourceserver.info - sourceserver.info/wiki/ - ausgestorbener Support für HL2-Server
Habe eine Möglichkeit gefunden:
>> 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
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