Как преобразовать неофициальные персидские числовые слова в целочисленное значение валюты (риал)Python

Программы на Python
Ответить
Anonymous
 Как преобразовать неофициальные персидские числовые слова в целочисленное значение валюты (риал)

Сообщение Anonymous »

Мне нужно преобразовать неофициальный ввод пользователя на персидском языке, который представляет денежную сумму, в одно целое значение в риалах в Python.
Ввод имеет произвольную форму и может включать в себя:
  • персидские числовые слова (например, یک, پنجاه)
  • Неофициальное/разговорное написание (например, یه, پونصد, تومن)
  • Смешанные цифры и слова
  • Единицы величины, такие как هزار, میلیون, میلیارد
  • Смешанные валютные единицы (

    Код: Выделить всё

    تومان
    , ریال) в одном предложении
Цель состоит в том, чтобы проанализировать текст и вычислить правильное числовое значение, а не просто извлечь цифры.
Примеры и правильный вывод (целая часть):

Код: Выделить всё

[ ('صدو پنجاه و دو تومان ', '1520000 ریال ')
, ('هزار و 200 تومان ', '12000 ریال ')
, ('یک میلیون و 100 پنجاه تومان ', '11500000 ریال ')
, ('یک میلیاردو صدو هشتاد میلیون تومان ', '11800000ریال')
, ('چهارصدو پنجاه و 8 تومان ', '4580000ریال')
, ('1200 و هشت تومان ', '12080 ریال ')
, ('یه میلیون و پونصد هزار تومن ', '15000000ریال ')
, ('یکو پونصد میلیون  تومن ', '15000000ریال ')
, ('یک میلیاردو 800 میلیون  تومن ', '18000000ریال ')
, ('دو هزار و 325 تومان ', '23250 ریال ')
, ('پونزده  میلیارد تومن ', '150000000ریال ')
, ('یک هزارو بیستمن', '10200 ریال ')
, ('پونصدو پنجاه تومن ', '5500000 ریال ')
, ('یکصدو بیست تومن ', '1200000 ریال ')
, ('پنحاه هزارو 800 تومن ', '508000ریال ')
, ('199 هزار و دویست ', '1992000ریال ')
, ('هزارو هشتصدو 50 تومن ', '18500 ریال ')
, ('هراز و 500 تومن ', '15000 ریال ')
, ('598 هزارو صدو پنجاه تومن ', '5981500ریال ')
, ('500 هزار تومن', '5000000ریال ')
, ('182000ریال ', '182000ریال')
, ('100تومن', '1000 ریال')
, ('108 هزارو 6 تومن و58 ریال', '10806058 ریال')
, ('100 هزاروپنج تومن و و شش ریال ', '1000056 ریال')
, ('9 میلیاردو ششصدو سی و هشت میلیون و 527 هزارو 41تومن ', '96385270410 ریال')
, ('هشتصدو هفتادو پنج میلیون و 430 هزارو یک تومن', '8754300010 ریال')
, ('یکهزارو دویست و 56 تومن و 9 ریال ', '10012569 ریال')
, ('یک میلیون و چهارصدو پنجاه ونه هزارو ششصدو هشتادو هفت تومان و 5 ریال ', '14596875 ریال')
, ('چهارصدو پنجاه شش میلیون و 123 هزارو 357 تومن', '4561233570 ریال ')
, ('یک میلیون و 582 هزارو 745 تومان و 4 ریال ', '15827454 ریال ')
, ('یک میلیون و 595 هزارو هشتصدو بیست و چهارتومن ', '958240 ر یال ')
, ('چهار تریلیون و هشتصدو 59 میلیاردو 765 میلیون و 132هزارو540 تومن ', '48597651325400 ریال ')
, ('هشت میلیون و 957 هزارو 421 تومن ', '89574210 ریال ')
, ('یکصدو بیست و 4 هزارو 571 تومن ', '1245710 ریال ')
, ('شصت و 5 میلیون 824 هزارو 500 تومن ', '658245000ریال ')
, ('شصت و پنج میلیون و 652 هزراو 400 تومن ', '656524000ریال ')
, ('هفت میلیاردو 775میلیون و 557 هزارو 755 تومان ', '77755577550 ریال ')
, ('دویست و سی و یک میلیون 547 هزارو 121 تومن', '2315471210 ریال ')
, ('یکصدو 21 هزارو 451 تومن ', '1214510 ریال ')
, ('120 تومن ', '1200 ریال ')
, ('دوازده هزارو صد تومن ', '121000 ریال ')
, ('چهارده هزارو هفتصدو 85 تومن ', '147850 ریال ')
, ('شصت و یک هزارو 43 تومن و 3 ریال ', '610433 ریال ')
, ('پنجاه و هشت هزارو 921 تومن', '589210 ریال ')
, ('نهصدو شصت و پنج هزارو 874 تومن ', '9658740 ریال ')
, ('یک میلیون و چهارصدو 78 هزارو 52 تومن ', '14785200 ریال ')
, ('65 میلیون و 284 هزارو 710 تومن ', '652847100 ریال ')
, ('659 میلیون و 856 هزارو 589 تومن ', '6598565890 ریال ')
, ('14 میلیون و 521 هزارو 470 تومن ', '145214700 ریال ')
, ('547ملیون پانصد هشتاد هزار تومان', 'مبلغ547580000 ریال')
, ('صد بیست پنج ملیون  پانصد هزار تومان', 'مبلغ125500000  ریال')
, ('645ملیون  هتصد و هفتاد هزار تومان', 'مبلغ645770000 ریال')
, ('صد نود ملیون و574 هزار تومان', 'مبلغ190000574 ریال')
, ('194ملیون وپنجاهو چهار  هزار تومان', 'مبلغ194900054ریال')
, ('7ملیون پانصد هزار تومان', 'مبلغ7500000   ریال')
, ('3ملیارد753 ملیون وپانصدهشتاد هزار تون هتصد', 'مبلغ3753589700 ریال')
, ('4ملیون پانصد هفتاد هشت هزار  صد و بیست هزار تومان', 'مبلغ4578120 ریال')
, ('96ملیونپانصد هشتاد و چهار هفتصد هزار تومان', 'مبلغ96584700 ریال')
, ('10هزار تومان', 'مبلغ 10000 ریال')
, ('195ملیون تومان', 'مبلغ195000 ریال')
, ('1ملیون وششصد پنجاه چهار  هشتصد تومان', 'مبلغ1654800  ریال')
, ('یک ملیون هشتثد هشتاد هزار تومان', '1880000 ریال')
, ('  5ملیون وهتصد هفتاد هزار تومان', '5700000 ریال')
, ('2ملیون پانصد چهل هشت پتنصد هزار تومان ', 'مبلغ2548500 ریال')
, ('80هزار تومان', 'مبلغ80000 ریال')
, ('50هزار تومان', 'مبلغ50000ریال')
, ('1ملیون پانصد 42هزار  تومان', 'مبلغ1542000  ریال')
, ('457هزار  پانصد تومان', 'مبلغ457500 ریال')
, ('127هزار تومان', 'مبلغ127000  ریال')
, ('1ملیون نهصد هفتاد پنج هزار تومان',  'مبلغ1975000 ریال')
, ('754هزار تومان', 'مبلع 754000')
, ('4ملیون پانصد هزار تومان', 'مبلغ4500000  ریال')
, ('354هزار  چهار صد هتاد دو تومان', 'مبلغ35472  ریال')
, ('1ملیون هتصد و بیست  یک هزار ششصد  هشتاد تومان ', 'مبلغ1721680 ریال')
, ('150هزار تومان', 'مبلغ150000ریال')
, ('11هزار تومان', 'مبلغ11000 ریال')
, ('325هزار صد چهل هزار تومان', 'مبلغ325140 ریال')
, ('15هزار تومان', 'مبلغ15000 ریال')
, ('145هزار تومان', 'مبلغ145000  ریال')
, ('50هزار تومان', 'مبلغ50000  ریال')
, ('صد بیست چهار هزار 500 تومان', 'مبلغ124500 ریال')
, ('547هزار  هشتصد پنجاه تومان', 'مبلغ547850 ریال')
, ('369هزار پانصد هشتاد  نومان', 'مبلغ369580 ریال')
, ('1ملیون دویست و پنجاه و چهار هشتصد هفتاد هراز تومان', 'مبلغ1254870 ریال')
, ('1ملیون و پانصد چهار هزار 870 تومان', 'مبلغ1504870ریال')
, ('37هزا تومان', 'مبلغ37000 ریال')
, ('4500هزار تومان', 'مبلغ4500  ریال')
, ('950هزا رتومان', 'مبلغ950000  ریال')
, ('نهصد و 87 هزار تومان', 'مبلغ987000 ریال')
, ('125هزار تومان', 'مبلغ125000 ریال')
, ('305هزار تومان', 'مبلغ305000  ریال')
, ('220هزار تومان', 'مبلغ220000')
, ('300هزار تومان', 'مبلغ300  ریال')
, ('46هزار 200 تومان', 'مبلغ46200 ریال')
, ('72هزار 587 هزار تومان', 'مبلغ 72587 ریال')
, ('900هزار تومان', 'مبلغ  900000  ریال')
, ('154هزار 855 هزار تومان', 'مبلغ 154855 ریال')
]
Каков рекомендуемый подход (алгоритм или существующая библиотека) для анализа персидских числовых слов, включая неформальные/разговорные варианты, в правильное целочисленное значение?


Подробнее здесь: https://stackoverflow.com/questions/798 ... value-rial
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»