Я пытаюсь преобразовать записанные числа в числовые значения.
Например, чтобы извлечь миллионы из этой строки:
text = 'I need $ 150000000, or 150 million,1 millions, 15 Million, 15million, 15Million, 15 m, 15 M, 15m, 15M, 15 MM, 15MM, 5 thousand'
Кому:
'I need $ 150000000, or 150000000,1000000, 15000000, 15000000, 15000000, 15000000, 15000000, 15000000, 15000000, 15000000, 15000000, 5 thousand'
Я использую эту функцию, чтобы сначала удалить все разделители в числах:
def foldNumbers(text):
""" to remove "," or "." from numbers """"
text = re.sub('(?<=[0-9])\,(?=[0-9])', "", text) # remove commas
text = re.sub('(?<=[0-9])\.(?=[0-9])', "", text) # remove points
return text
И я написал это регулярное выражение, чтобы найти все возможные шаблоны для общих обозначений Million.Это 1) находит цифры и смотрит в будущее для 2) общего обозначения для миллионов, 3) "[az]?"часть заключается в обработке необязательных «s» для миллионов или миллионов, где я уже удалил «».
re.findall(r'(?:[\d\.]+)(?= million[a-z]?|million[a-z]?| Million[a-z]?|Million[a-z]?|m| m|M| M|MM| MM)',text)
, который правильно соответствует миллионным числам и возвращает:
['150', '1', '15', '15', '15', '15', '15', '15', '15', '15', '15']
Что мне нужночтобы сделать сейчас, это написать шаблон замены, чтобы вставить «000000» после цифр, или перебрать и умножить цифры на 100000. Я пробовал это до сих пор:
re.sub(r'(?:[\d\.]+)(?= million[a-z]?|million[a-z]?| Million[a-z]?|Million[a-z]?|m| m|M| M|MM| MM)', "000000 ", text)
, который возвращает:
'I need $ 150,000,000, or 000000 million,000000 millions, 000000 Million, 000000 million, 000000 Million, 000000 m, 000000 M, 000000 m, 000000 M, 000000 MM, 000000 MM, 5 thousand'
Я думаю, что мне нужно оглянуться назад (? <=), Однако я не работал с этим до и после нескольких попыток, я не могу справиться с этим.</p>
К вашему сведению: я планирую сначала решить «Миллионы», а затем тиражировать решение для тысяч (K), миллиардов (B), триллионов (T) и, возможно, для других единиц, таких как расстояния, валюты и т. Д.Я искал SO и Google для каких-либо решений в NLP, очистки текста и майнинг статей, но не нашел ничего.