2017-01-26 2 views
-4

zurückgibt EDIT: Das "bereits beantwortet" spricht nicht darüber, was ich bin. Meine Zeichenfolge kommt bereits im Word-Format heraus. Ich muss diese Wörter von meiner Schnur in eine Liste streichenwie man Zahlen im Wortformat von einem String in Python

Ich versuche, mit Phrasenmanipulation für einen Stimmassistenten in Python zu arbeiten.

Wenn ich spreche etwas wie:

"What is 15,276 divided by 5?"

Es heraus wie diese formatiert kommt:

"what is fifteen thousand two hundred seventy six divided by five"

Ich habe bereits einen Weg, um einen String in einen int für die Mathematik zu ändern Teil, also gibt es eine Möglichkeit, eine Liste wie diese aus dem Satz zu bekommen?

['fifteen thousand two hundred seventy six','five'] 
+0

Ja, Sie können. In diesem Fall können Sie geteilt teilen. Wie würden Sie sich in anderen Fällen aufteilen? – MYGz

+0

Ich denke, die Frage ist mehr über die Umwandlung der Zahlen in ihre buchstabierten Versionen als, wie man eine Liste von ihnen macht. – kindall

+0

Die Zahlen erscheinen bereits im Word-Format. Ich kann sie zu einem int ändern, wenn es um die Mathematik geht – Jebby

Antwort

0

durch die Liste der Wörter gehen und jeder für die Mitgliedschaft in einer Reihe von numerischen Worte überprüfen. Fügen Sie einer temporären Liste benachbarte Wörter hinzu. Wenn Sie ein Nicht-Nummernwort gefunden haben, erstellen Sie eine neue Liste. Denken Sie daran, Nicht-Zahl Wörter am Anfang des Satzes und Zahl Wörter am Ende des Satzes zu berücksichtigen.

result = [] 
group = [] 
nums = set('one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty thirty forty fifty sixty seventy eighty ninety hundred thousand million billion trillion quadrillion quintillion'.split()) 
for word in "what is fifteen thousand two hundred seventy six divided by five".split(): 
    if word in nums: 
     group.append(word) 
    else: 
     if group: 
      result.append(group) 
     group = [] 

if group: 
    result.append(group) 

Ergebnis:

>>> result 
[['fifteen', 'thousand', 'two', 'hundred', 'seventy', 'six'], ['five']] 

Um jeden sublist in einer einzigen Zeichenfolge beitreten:

>>> list(map(' '.join, result)) 
['fifteen thousand two hundred seventy six', 'five'] 
+0

Danke! Genau das habe ich gesucht! – Jebby

Verwandte Themen