Skip to content

优化代码结构和增强解析能力#72

Open
xiaoyaosharenfan wants to merge 6 commits into
Ailln:masterfrom
xiaoyaosharenfan:master
Open

优化代码结构和增强解析能力#72
xiaoyaosharenfan wants to merge 6 commits into
Ailln:masterfrom
xiaoyaosharenfan:master

Conversation

@xiaoyaosharenfan

@xiaoyaosharenfan xiaoyaosharenfan commented Oct 7, 2023

Copy link
Copy Markdown
  1. 优化代码结构,拆分预处理和校验逻辑
  2. 支持8kw --> 80000000这类说法
  3. 支持不规范的中文表达,例如:八万八百,八万零八千
  4. 支持千分符,例如1,999
  5. 支持3个亿的说法
  6. 支持八百.22这样的说法
  7. 支持1.5千万这种阿拉伯数字+多个中文单位

@Ailln

Ailln commented Oct 12, 2023

Copy link
Copy Markdown
Owner

I will review it soon.

@Ailln

Ailln commented Apr 22, 2026

Copy link
Copy Markdown
Owner

感谢这个 PR,里面有一些需求方向是很有价值的,不过目前这版不能直接合并。

主要原因是:

  1. 这个分支基于较旧的 master,直接合并会回退当前已有功能,比如 direct 模式。
  2. 当前实现引入了回归,测试不能通过。例如 normal/smart 模式下 三十九壹拾壹 会触发 KeyError
  3. 一些归一化规则过宽,比如把 e/E 当作“亿”会影响类似 1e3 的输入。
  4. 数字计算建议继续使用现有的 Decimal 思路,避免 float 精度问题。

这 7 个需求里,我们可以接受下面这些方向:

  • 支持合法千分符,例如 1,99912,345,678,但需要校验逗号位置,不能简单删除所有逗号。
  • 支持 3个亿 / 三个亿 这类说法,可在 normal/smart 模式下把 个亿 归一化为 亿,strict 模式不支持。
  • 支持 八百.22,即 smart 模式下把单个英文小数点 . 作为 处理。
  • 支持 1.5千万 这类“阿拉伯数字 + 多个中文单位”的写法,建议基于现有 10.1万 的逻辑扩展,并继续使用 Decimal
  • 8kw -> 80000000 可以部分接受:建议先只支持 k/Kw/W,不要支持 e/Eq/Qy/Y,避免和科学计数法或非标准缩写冲突。

下面这些暂时不需要在本 PR 里处理:

  • 八万八百八万零八千 当前 master 已经支持,不需要额外修改。
  • “拆分预处理和校验逻辑”这个重构方向可以接受,但建议另开一个单独 PR 做,避免和行为变更混在一起。重构 PR 需要保证现有测试全部通过,并保留当前 direct 模式等已有能力。

建议你把这个 PR 缩小范围,只实现上面可接受的行为增强,并补充对应测试。所有修改应基于最新 master,确保 python -m pytest 通过。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants