Поскольку ни один из них не занимался финансовыми цифрами реального мира в документах Excel и Word, которые мне нужно было найти, вот моя вариация. Он обрабатывает ints, float, отрицательные числа, номера валют (потому что он не отвечает на split), и имеет возможность отбрасывать десятичную часть и просто возвращать ints или возвращать все.
Он также обрабатывает систему чисел индийских лаков, где запятые появляются нерегулярно, а не каждые 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