做网页采集、表格清洗、订单整理时,经常会遇到一个小问题:价格不是干干净净的数字,而是混在一段文本里。
比如 $1,299.99、EUR 1.234,56、¥89.90、Free 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.99、1.299,99、1 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
}

评论(0)