我需要編寫一個Python PROGRAMM在字符串文本西班牙語數字轉換成位數:解析字符串文本NUM西班牙語語法
輸入:
'Ciento Veinticuatro Mil Ochocientos Treinta y Cinco'
輸出所需:
124835
我寫了一些代碼,但我意識到我正在重新發明輪子,只是一個解析器。所以,我需要使用lexic/grammar解析器模塊。但我以前從來沒有用lexic/grammar解析器處理過,首先需要編寫BNF或PEG符號(我還沒決定使用哪個解析器模塊,我可以找到最簡單的模塊)。
這對我來說很難,數字的西班牙語語法與英語非常不同。
我的方法:
<numeral> ::= ([<centenas>][<decenas>][<unidades>])+ [<millares>]
我擔心,它是講西班牙語的問題。
我不知道爲什麼你認爲西班牙的數字是從英語如此不同,它基本上是相同的結構。當然,還有融合的數百(與性別:quinientas),但這是一個小細節,你的示例代碼似乎是在正確的軌道上。嘗試愛爾蘭語,如果你想要一些複雜的東西:) – rici 2014-09-02 03:42:38
@rici不僅融合的數百有性別。 >「靜脈」,「靜脈」。一些數字有三種形式(更多帶有重音字符):21 - >「靜脈」,「靜脈」,「靜脈」,「靜脈」。在數十和單位之間連接「y」:35->「treinta」「y」「cinco」。儘管如此,西班牙語並不是我國(西班牙)最糾結的語言,在北方講巴斯克語(也稱爲「Euskera」),其數字系統是一個瘋狂的問題:http://www.santurtzieus.com/ gelairekia/laguntza/funtzioak/los_numeros.htm – Trimax 2014-09-02 06:54:27
Si pues pero no hay problema en reconocer las variantes; solo tienes que poner todas en tuléxico。 Y ignorar la'y'。 Yo que tuignoraríalos acentostambién; mucha gente no les teclean,especialmente si no tienen un teclado adecuado。 Y insisto queirlandéses aun peor que vasco。體育quince es「acúigdéag」(acuíg= 5; deich = 10)y 17 es「a seachtdéag」。佩羅。 15 libras:「cuígphuntdéag」。 17 libras:「seunt bpuntdéag」。 Libra es「punt」,pero losnúmeroscambian la palabra siguiente:cinco phunt(funt),siete bpunt(bunt,la p es mudaacá)。 Y se entremezclan:siete bunt diez。 – rici 2014-09-02 08:12:39