首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python用逗号千分隔符替换中间数字。

Python用逗号千分隔符替换中间数字。
EN

Stack Overflow用户
提问于 2014-07-20 00:31:39
回答 2查看 1.6K关注 0票数 3

我有一根这样的绳子:

代码语言:javascript
运行
复制
123456789.123456789-123456789

在小数/连字符前后可以有任意数量的数字,我需要做的是删除小数点之前的所有内容,包括小数点,删除连字符和连字符之后的所有内容。然后,对于中间一组数字(我需要保留),我需要放置一个逗号数千个分隔符。

因此,这里的输出应该是:

代码语言:javascript
运行
复制
123,456,789

我可以用“旁观者”来捕捉中间的数字,但是它不会取代其他数字,我不知道如何使用“旁观者”来放置逗号。

代码语言:javascript
运行
复制
(?<=\.)\d+(?=-)

然后我想我可以用这样的捕获组来工作,但不确定如何插入逗号

代码语言:javascript
运行
复制
\d+\.(\d+)-\d+

如何使用上述正则表达式之一插入逗号?

EN

Stack Overflow用户

回答已采纳

发布于 2014-07-20 00:35:08

不要试图用正则表达式插入数千个分隔符;只需选择这个中间数字并使用一个函数来生成替换;re.sub()接受一个函数作为替换模式:

代码语言:javascript
运行
复制
re.sub(r'\d+\.(\d+)-\d+', lambda m: format(int(m.group(1)), ','), inputtext)

当在,中使用整数时,函数格式会将一个数字格式化为一个带有数千个分隔符的数字:

代码语言:javascript
运行
复制
>>> import re
>>> inputtext = '123456789.123456789-123456789'
>>> re.sub(r'\d+\.(\d+)-\d+', lambda m: format(int(m.group(1)), ','), inputtext)
'123,456,789'

当然,这仍然可以在包含数字、点、数字、破折号、数字序列的较大文本中工作。

format()函数与方法密切相关,但不需要完整的字符串模板(因此不需要{}占位符或字段名)。

票数 4
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24846257

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档