gpt4 book ai didi

python - 使用正则表达式以逗号分隔南亚编号系统中的大量数字

转载 作者:太空狗 更新时间:2023-10-29 21:27:01 26 4
gpt4 key购买 nike

我试图找到一个正则表达式,以逗号分隔基于 south asian numbering system 的大数字.

几个例子:

  • 1,000,000(阿拉伯语)是 10,00,000(印度/印度教/南亚)
  • 1,000,000,000(阿拉伯语)是 100,00,00,000(印度/H/SA)。

逗号模式每 7 个数字重复一次。例如,1,00,00,000,00,00,000

从 Friedl 的《掌握正则表达式》一书中,我有以下阿拉伯数字系统的正则表达式:

r'(?<=\d)(?=(\d{3})+(?!\d))'

对于印度的编号系统,我提出了以下表达式,但它不适用于超过 8 位的数字:

r'(?<=\d)(?=(((\d{2}){0,2}\d{3})(?=\b)))'

使用上述模式,我得到 100000000,00,00,000

我正在使用 Python re 模块 (re.sub())。有什么想法吗?

最佳答案

我知道 Tim 已经回答了您提出的问题,但是假设您从数字而不是字符串开始,您是否考虑过是否需要正则表达式?如果您使用的机器支持印度语言环境,那么您可以只使用语言环境模块:

>>> import locale
>>> locale.setlocale(locale.LC_NUMERIC, "en_IN")
'en_IN'
>>> locale.format("%d", 10000000, grouping=True)
'1,00,00,000'

该解释器 session 是从 Ubuntu 系统复制的,但请注意 Windows 系统可能不支持合适的语言环境(至少我的不支持),因此虽然这在某些方面是一个“更干净”的解决方案,具体取决于您的它可能可用也可能不可用。

关于python - 使用正则表达式以逗号分隔南亚编号系统中的大量数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14237241/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com