gpt4 book ai didi

Python 和 Regex 将书面数字转换为数字

转载 作者:行者123 更新时间:2023-12-01 08:36:46 24 4
gpt4 key购买 nike

我正在尝试将书面数字转换为数值。

例如,要从此字符串中提取数百万:

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

我编写了这个正则表达式来查找常见百万符号的所有可能模式。 1) 查找数字并提前查找 2) 数百万的常用符号,3) “[a-z]?”部分是处理百万或数百万上的可选“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'

我想我需要做一个look behind (?<=),但是我在几次尝试之前和之后都没有处理过这个问题,我似乎无法解决它。

仅供引用:我的计划是首先解决“百万”,然后复制千(K)、十亿(B)、万亿(T)以及可能的其他单位(例如距离、货币等)的解决方案。我已经搜索过SO 和 google 寻找 NLP、文本清理和挖掘文章中的任何解决方案,但没有找到任何内容。

最佳答案

您可以通过相对简单的 re.sub 来完成此操作:匹配

(?i)\b(\d+) ?m(?:m|illions?)?\b

捕获组中的初始数字,并替换为由 6 个零连接的该组:

r'\g<1>000000'

https://regex101.com/r/IedRP4/1

代码:

text = 'I need $ 150000000, or 150 million,1 millions, 15 Million, 15million, 15Million, 15 m, 15 M, 15m, 15M, 15 MM, 15MM, 5 thousand'
output = re.sub(r'(?i)\b(\d+) ?m(?:m|illions?)?\b', r'\g<1>000000', text)

(因为替换中的组后跟数字,make sure 使用 \g<#> 语法而不是 \# 语法)

关于Python 和 Regex 将书面数字转换为数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53681245/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com