做网页采集、表格清洗、订单整理时,经常会遇到一个小问题:价格不是干干净净的数字,而是混在一段文本里。

比如 $1,299.99EUR 1.234,56¥89.90Free shipping。如果每个项目都临时写正则,时间久了会很乱。

PriceParserAHK 是我整理给 AHK v1 用的轻量价格解析库,思路参考 Python 的 price-parser。它不是金融级金额引擎,目标是把日常文本里的常见价格快速提取出来。

最小上手示例

#Requires AutoHotkey v1.1
#Include <PriceParserAHK>

price := Price_Parse("$1,299.99")
MsgBox, % "金额:" . price.amount . "`n货币:" . price.currency

Price_Parse() 返回的是对象,里面有规范化后的金额、原始金额片段、识别到的货币代码和原始输入文本。

常见用法

price := Price_Parse("¥1,299.00")
amount := Price_ParseAmount("USD 20")
currency := Price_ParseCurrency("€9.9")

如果你只关心金额,就用 Price_ParseAmount();如果只想识别货币,就用 Price_ParseCurrency()。完整场景下我更建议用 Price_Parse(),后面调试更方便。

适合放在哪些脚本里

它适合商品页面价格提取、邮件通知里的金额识别、CSV/Excel 字段清洗、网页自动化采集后的价格规范化、简单订单或报价文本解析。

比如采集页面以后,可以先用浏览器控制或 HTTP 请求拿到文本,再用这个库统一取金额。这样后面的 Excel 写入、价格比较、异常提醒都会清楚很多。

支持范围

目前支持常见货币符号和代码,例如美元、欧元、英镑、日元、人民币、港币、台币等;也能处理常见千分位和小数格式,包括 1,299.991.299,991 299,99 这类文本。

免费文本也做了基础识别,比如 free、gratis、complimentary、no charge。

此库的能力与边界

这个库是启发式规则解析,适合日常常见文本,不适合当金融级解析器。它不处理中文大写金额,不做汇率换算,也不负责复杂价格区间的业务判断。

如果一段文本里有多个数字,它会优先选择看起来最像价格的数字片段。实际项目里,最好先缩小文本范围,比如只把商品价格所在的 DOM 文本传进来,而不是把整页文字都丢进去。

对初学者来说,它的价值在于省掉一堆零散正则,把“从文本里拿价格”变成一个稳定的小步骤。

PriceParserAHK.ahk【文章底部有完整示例】

demo代码片段展示:

#NoEnv
#SingleInstance Force
#Include <PriceParserAHK>

samples := []
samples.Push("$1,299.99")
samples.Push("EUR 1.234,56")
samples.Push(Chr(0x4EC5) . Chr(0x552E) . " " . Chr(0xFFE5) . "89.90")
samples.Push("Free shipping")
samples.Push("HK$ 2,000")
samples.Push("Price: 12 345,67 Kč")

for _, sample in samples {
  price := Price_Parse(sample)
  MsgBox, % "Raw: " . sample . "`namount: " . price.amount . "`ncurrency: " . price.currency
}

 

声明:站内资源为整理优化好的代码上传分享与学习研究,如果是开源代码基本都会标明出处,方便大家扩展学习路径。请不要恶意搬运,破坏站长辛苦整理维护的劳动成果。本站为爱好者分享站点,所有内容不作为商业行为。如若本站上传内容侵犯了原著者的合法权益,请联系我们进行删除下架。