2017-01-26 9 views
-4

EDIT: "既に答えられました"というのは私の話ではありません。私の文字列はすでに単語形式で出ています。それらの単語をリストから削除する必要がありますPythonの文字列から数値をワード形式で返す方法

私は、パイソンの音声アシスタントのフレーズ操作に取り組もうとしています。

私は何かを話すとき:私はすでに数学のためにintに文字列を変更する方法を持っている

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

"What is 15,276 divided by 5?"

をそれはこのようにフォーマット出てきますそれでは、どういうわけか、フレーズからこのようなリストを取得する方法はありますか?

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

はいすることができます:単一の文字列に、各サブリストに参加することを

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

。この場合、分割して分割することができます。あなたは他の場合どのように分割しますか? – MYGz

+0

私の質問は、それらのリストを作る方法よりも数字を綴り出したバージョンに変換することです。 – kindall

+0

数字はすでに単語形式で出力されています。数学になると、私はそれらをintに変更することができます – Jebby

答えて

0

単語のリストを確認し、それぞれの単語のメンバーシップを確認します。一時的なリストに隣接する単語を追加する。数字以外の単語を見つけたら、新しいリストを作成してください。文頭に数字以外の単語を、文の最後に単語数を記入してください。

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) 

結果:

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

ありがとうございました!これはまさに私が探していたものです! – Jebby

関連する問題