Python将中间数字替换为逗号千分位

2024-04-26 00:46:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一根这样的绳子:

123456789.123456789-123456789

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

所以这里的输出是:

^{pr2}$

我可以使用lookaround来捕获中间的数字,但是它不会替换其他数字,而且我不知道如何使用lookaround来放置逗号

(?<=\.)\d+(?=-)

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

\d+\.(\d+)-\d+

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


Tags: 内容数量数字字符逗号分隔符小数绳子
2条回答

您在这里要求一个完整的正则表达式,拆分字符串可能会更容易。。在

>>> import re
>>> s = '123456789.123456789-123456789'
>>> '{:,}'.format(int(re.split('[.-]', s)[1]))
123,456,789

如果您喜欢使用正则表达式,请在替换项中使用函数调用或lambda:

^{pr2}$

您可以看看不同的format规范。在

不要试图用regex插入千个分隔符;只需选择中间的数字并使用函数来生成替换;^{}接受一个函数作为替换模式:

re.sub(r'\d+\.(\d+)-\d+', lambda m: format(int(m.group(1)), ','), inputtext)

^{} function中使用整数的,格式处理将数字格式化为具有数千个分隔符的1:

^{pr2}$

当然,这在包含数字、点、数字、破折号、数字序列的较大文本体中仍然有效。在

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

相关问题 更多 >