悦省yueser.com

← 全部指南

怎么从文字里只提取数字?小数、负号与千分位的坑

一段文字里混着金额、编号、日期和电话号码,只需要数字时,逐个选中太慢。粘贴后,工具会把连续数字连同前面的负号和小数部分一起挑出来。

打开工具:提取数字

什么时候要把数字单独拿出来

报价邮件里写着「单价 128.50 元,三件共 385.50 元,优惠 -12.50」,要核算金额,就得先把数字挑出来再算。从日志里统计耗时、从报表文本里取编号,也是一样的动作:先把数字和说明文字分开,才方便逐行核对。

还有一类是核对粘贴:把表格里的一列数字复制成文本后,和原表逐个比对,看有没有多一位、少一位。两列文本并排看很容易看花,先抽成一列数字,再和原表对齐,问题就明显了。

哪些字符会被算进数字

规则是:可选的一个负号,加上连续数字,再加上可选的小数点和更多数字。所以 -12.50 会完整保留,3.14 也是。但千分位不属于数字,1,000 会被拆成 1 和 000 两个结果;日期 2024-05-01 会变成 2024、-05、-01,连字符被当成负号。

电话号码同样会被拆开,138-0000-0000 会变成 138、-0000、-0000。全角数字和中文数字不在识别范围内,「三十」这样的写法一个数字都提不出来。提取后请按行核对,确认没有把日期或电话的片段当成金额。

数字出来之后怎么用才不出错

提取只负责挑字符,不理解单位。50% 会得到 50,¥1,200 会得到 1 和 200,货币和百分号都留在原文里。把结果贴回计算器或表格前,先补上单位和量级,否则很容易把「千」当成「个」。

它也不算数、不排序、不去重,输出顺序就是出现顺序。需要求和或比较时,把结果粘进表格再处理。科学计数法同样会被拆开,1e5 会得到 1 和 5,遇到这类数字请手动修正。

常见问题

小数和负数会被完整提取吗?

会。规则允许一个可选的负号和一个小数部分,所以 -12.50、3.14 都能完整输出。但连续的小数点、科学计数法里的 e、千分位逗号都不在规则内,遇到这类写法需要在结果里手动修正。

为什么 1,000 变成了两个数?

因为逗号不被当作数字的一部分,规则在逗号处断开,于是得到 1 和 000 两个结果。处理金额时,可以先把千分位逗号删掉再提取,或者提取后手动把相邻的两段拼回去。

全角数字能提取吗?

不能。识别只针对半角 0 到 9,全角数字和中文数字都不会被命中。需要处理这类文本时,先把全角转成半角,再执行提取,结果才完整。

相关工具:提取数字