如何批量将文本中的中文大写数字替换为阿拉伯数字?

2021-07-27 22:04:42 +08:00
 lalacat2i
大家好,我是小白,不懂技术,一般遇到问题靠谷歌。但是这个问题不知如何是好。

最近在看民法典的法条,为了阅读的舒适,希望把大写数字替换为阿拉伯数字,比如第一千一百四十一条替换为第 1141 条。请问大家有什么简单易行的方法吗?
2121 次点击
所在节点    问与答
17 条回复
lalacat2i
2021-07-27 22:06:00 +08:00
抱歉,描述错误,应该是替换为阿拉伯数字。
zxCoder
2021-07-27 23:01:29 +08:00
数字的位数不会很多,都是有固定的书写格式的吧,感觉 if else 就可以
sunjiayao
2021-07-27 23:07:15 +08:00
正则应该可以搞定。但我不会正则
nuistzhou
2021-07-27 23:47:01 +08:00
针对每个长度的大写数字写正则好了
tinytoadd
2021-07-28 01:42:14 +08:00
TuYanzheng
2021-07-28 02:12:22 +08:00
@zxCoder 证明:一切数字都可以用不超过二十个汉字表示
反证:假设存在集合 A 表示不能用二十个以内汉字表示的数,则取最小的数 a,可以表示为“最小的不能用二十个以内汉字表示的数”,与集合描述相反 所以,一切数字都可以用二十个以内汉字表示。
LiYanHong
2021-07-28 08:54:06 +08:00
不会编程的话,总共就十个字,查找替换都比你提个问快
SevnChen
2021-07-28 09:06:37 +08:00
https://github.com/silencesmile/money_to_word/blob/master/money_to_word.py

给一个示例,主要是还要考虑个十百千万这种表示位的
SevnChen
2021-07-28 09:08:32 +08:00
@LiYanHong 虽说不难,但也不是替换 10 个字就能解决的问题。
对比一下“一千一百四十一”和“一千一百四十”
shakoon
2021-07-28 09:19:33 +08:00
楼主你说的这种字符是中文数字,不是中文大写数字。贰仟伍佰壹拾这种才是中文大写。
emonc
2021-07-28 09:19:48 +08:00
正则走两遍,先把单位去掉,再把汉字换成阿拉伯数字。应该就能解决大部分情况
l9rw
2021-07-28 09:49:05 +08:00
不会编程的话可以用 word 。
先 ctrl + H 打开替换窗口,点更多,勾选 [使用通配符] ,然后查找框里输入"第[零一二三四五六七八九十百千万]{1,10}条",不带引号,替换为里面留空,点最下面格式,随便选一个特殊格式。
选中自定义格式的 [第一条] ,点开始->选择->选择格式相似的文本,选中以后点开始->定义新编号格式->确定就好了
Maboroshii
2021-07-28 09:56:33 +08:00
要不反向思维试一下?
先做一个把阿拉伯数字翻译成汉字的方法,1001 -> 一千零一 , 这个应该好实现吧?
然后提前把 0 ~ 9999999 全部翻译好,最后反查替换。
zjj19950716
2021-07-28 10:20:03 +08:00
lalacat2i
2021-07-28 20:07:15 +08:00
@zjj19950716 感谢,看上去是我不会描述问题才不会搜索信息

@l9rw 感谢,我稍后尝试一下

@shakoon 感谢你的指正

@SevnChen 多谢提供范例

@tinytoadd 感谢提供思路
MiketsuSmasher
2021-07-31 00:14:21 +08:00
可以考虑一下这个项目,https://github.com/Ailln/cn2an
用这个批量生成所有出现过的数字,然后再批量替换
lalacat2i
2021-08-22 01:23:08 +08:00
@MiketsuSmasher 感谢,最近没上才看到你的建议

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/792140

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX