Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/18: Рейтинг темы: голосов - 18, средняя оценка - 4.67
2 / 2 / 0
Регистрация: 16.07.2022
Сообщений: 42
1

num2words числа в текст. Поиск - замена чисел на текст

15.08.2022, 23:58. Показов 3727. Ответов 12

Author24 — интернет-сервис помощи студентам
Салют фурамчанам!
Наверное многие из вас сталкивались num2words?
Цель: Поиск в тексте числа и замена на текстовый вариант.
Тестовый кусок успешно переводит только числа:
Python
1
2
3
4
5
from num2words import num2words
p=r"42"
num2words(p)
g =str(num2words(p,lang='ru'))
print (g)
Но если входящую строку поменять на:
Python
1
p=r"42 дерева"
Выскочит ошибка.

Как правильно заставить его обработать текст?
Например текст "в 1819 году армия из 1500 солдат прошла 32 километра"
Итогом должно быть " В тысячу восемьсот девятнадцатом году армия из тысяча пятьсот солдат прошла тридцать два километра"
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.08.2022, 23:58
Ответы с готовыми решениями:

Поиск и замена тега со строкой формата "текст.текст"
Доброго времени суток! Подскажите пожалуйста как найти и заменить строку следующего вида:...

Поиск по числу и замена на текст
Здравствуйте! Прошу помочь, нужно подставить текст из ячейки 1 которой отвечает число в ячейке 2, в...

Поиск в WORD и замена на свой текст
Добрый день, подскажите пожалуйста как реализовать. В Edit будет вводиться текст,и необходимо в...

Поиск текста по документу и замена его на свой текст
Пытаюсь сделать поиск с заменой текста в документе. Все работает но дело в том что он меняет лишь...

Поиск текста по документу и замена его на свой текст
Вот есть маркер в Вворде типа $FIO$-2е штуки. В одну надо записывать Фамилию Имя Отчество полностью...

12
641 / 481 / 179
Регистрация: 28.05.2012
Сообщений: 1,415
16.08.2022, 04:42 2
Лучший ответ Сообщение было отмечено Pin240 как решение

Решение

Python
1
2
3
4
5
6
7
8
9
from num2words import num2words
import re
 
p = "42 дерева"
 
for i in re.findall(r'\d+', p):
    p = p.replace(i,  num2words(i, lang='ru'))
 
print(p)
2
2 / 2 / 0
Регистрация: 16.07.2022
Сообщений: 42
16.08.2022, 05:27  [ТС] 3
Спасибо большое! Не подскажите:
Цитата Сообщение от Vigi Посмотреть сообщение
re.findall(r'\d+', p):
Обрабатывает за 1 проход, весь текст, или ищет каждое число отдельно (этот вопрос для саморазвития)?
0
641 / 481 / 179
Регистрация: 28.05.2012
Сообщений: 1,415
16.08.2022, 05:58 4
del

Добавлено через 7 минут
ищет каждое число отдельно за один проход Почитайте о re и шаблонах для них... '\d+'
1
Эксперт Python
4308 / 1858 / 332
Регистрация: 18.01.2021
Сообщений: 3,428
16.08.2022, 10:22 5
Цитата Сообщение от Pin240 Посмотреть сообщение
Итогом должно быть " В тысячу восемьсот девятнадцатом году армия из тысяча пятьсот солдат прошла тридцать два километра"
Да где ж вас русскому языку учили!!!
Год - порядковое числительное, первая часть не склоняется. Правильно в тысячА восемьсот девятнадцатом году
А в солдатах количественное числительное и склоняются все слова. Родительный падеж, армия из тысячИ пятИсот солдат
0
2 / 2 / 0
Регистрация: 16.07.2022
Сообщений: 42
16.08.2022, 21:48  [ТС] 6
Цитата Сообщение от Red white socks Посмотреть сообщение
тысячИ пятИсот солдат
Тогда предлагаю вам саму библиотеку заставить у читывать падеж числительных, чего она не может. И вообще это не по теме могли и мимо пройти
0
Am I evil? Yes, I am!
Эксперт PythonЭксперт Java
19249 / 10969 / 2920
Регистрация: 21.10.2017
Сообщений: 23,168
16.08.2022, 21:54 7
Лучший ответ Сообщение было отмечено Pin240 как решение

Решение

Vigi, чуть подрихтую )))
Python
1
print(re.sub(r'\d+', lambda x: num2words(x[0], lang='ru'), p))
4
Эксперт Python
4308 / 1858 / 332
Регистрация: 18.01.2021
Сообщений: 3,428
16.08.2022, 23:42 8
Цитата Сообщение от Pin240 Посмотреть сообщение
И вообще это не по теме могли и мимо пройти
Воспитывать уважение к родному языку в тему всегда и везде.

Добавлено через 7 минут
Тем более, ладно в тексте ошиблись, к повальному невежеству привык, но вы же говорите
Цитата Сообщение от Pin240 Посмотреть сообщение
должно быть
2
2 / 2 / 0
Регистрация: 16.07.2022
Сообщений: 42
19.08.2022, 23:46  [ТС] 9
Цитата Сообщение от iSmokeJC Посмотреть сообщение
чуть подрихтую ))
А какой из них быстрей работает?
Цитата Сообщение от Vigi Посмотреть сообщение
re.findall(r'\d+', p):
или
Цитата Сообщение от iSmokeJC Посмотреть сообщение
re.sub(r'\d+', lambda x: num2words(x[0], lang='ru')
0
Am I evil? Yes, I am!
Эксперт PythonЭксперт Java
19249 / 10969 / 2920
Регистрация: 21.10.2017
Сообщений: 23,168
19.08.2022, 23:56 10
Pin240, а ты вот чисто логически поразмысли

Добавлено через 2 минуты
Код ув.Vigi, сначала ищет все числа, перебирает их, и в цикле меняет на требуемое.
Мой же вариант меняет сразу при нахождении, "на лету"
1
2 / 2 / 0
Регистрация: 16.07.2022
Сообщений: 42
20.08.2022, 09:09  [ТС] 11
Цитата Сообщение от iSmokeJC Посмотреть сообщение
Мой же вариант меняет сразу при нахождении, "на лету"
Этот вариант мне подходит больше
0
Am I evil? Yes, I am!
Эксперт PythonЭксперт Java
19249 / 10969 / 2920
Регистрация: 21.10.2017
Сообщений: 23,168
20.08.2022, 09:25 12
Почему?
0
2 / 2 / 0
Регистрация: 16.07.2022
Сообщений: 42
20.08.2022, 19:54  [ТС] 13
Есть вероятность попадания большого кол-ва цифр в тексте а оперативы маловато + тексты бывают оочень большие. Хотя их можно разбить на картежи, но зачем сильно мудрить) Краткость - сестра таланта
0
20.08.2022, 19:54
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.08.2022, 19:54
Помогаю со студенческими работами здесь

Бинарный поиск: преобразовать текст T в текст S, путем замены каждого вхождения слова A[i] на соответствующее слово B[i]
Помогите пожалуйста, уже довольно долго пытаюсь решить и найти решение для данной задачи, но...

Замена знаков препинания, для выделения текста елочки: «текст» и лапки: "текст" между собой
здравствуйте елочки менять на лапки естественно просто, а как менять наоборот, они ведь разные « и...

Дан текст. Выяснить, является ли этот текст десятичной записью целого числа
Дан текст. Выяснить, является ли этот текст десятичной записью целого числа.

Дан текст. Вычислить сумму чисел, входящих в этот текст
дан текст. вычислить сумму чисел, входящих в этот текст

Дан текст; выяснить, является ли этот текст: А) идентификатором Б) десятичной записью целого числа
Дан текст; выяснить, является ли этот текст: А) идентификатором Б) десятичной записью целого...

Определить, удовлетворяет ли текст следующему свойству: текст является записью четного числа в семеричной системе.
Помогите задачку сделать, очень нужно В заданный непустой текст входят только цифры и буквы....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru