Поскольку ни один из них не касался реальных финансовых показателей в Excel и Word Docs, которые мне нужно было найти, вот мой вариант.Он обрабатывает целые числа, числа с плавающей запятой, отрицательные числа, номера валют (потому что он не отвечает на разделение), и имеет возможность удалить десятичную часть и просто вернуть целые числа или вернуть все.
Он также обрабатывает систему счисления Индийских Лаков, в которой запятые появляются нерегулярно, а не через каждые 3 числа.
Он не обрабатывает научные обозначения или отрицательные числа, заключенные в скобки в бюджетах, - будет выглядеть положительно.
Также не извлекает даты.Есть лучшие способы поиска дат в строках.
import re
def find_numbers(string, ints=True):
numexp = re.compile(r'[-]?\d[\d,]*[\.]?[\d{2}]*') #optional - in front
numbers = numexp.findall(string)
numbers = [x.replace(',','') for x in numbers]
if ints is True:
return [int(x.replace(',','').split('.')[0]) for x in numbers]
else:
return numbers