gpt4 book ai didi

Python:从字符串中的 float 中删除 0

转载 作者:行者123 更新时间:2023-12-01 04:39:24 26 4
gpt4 key购买 nike

我正在寻找一种方法,从字符串中的所有 float 中删除所有无用的零。所以我会将 1.0*2.40*abc+1 转换为 1*2.4*abc+1。我现在有两种方法可以做到这一点,一种解决另一种的问题:

re.sub(r'(?<=\d)\.?0+\b', "", my_string)
#Problem: It shorts 10 to 1 (for example)

re.sub(r'(?<=\d)\.0+\b', "", my_string)
#Problem: It doesn't short 2.40 (for example)

如果您不知道我在说什么,请随时询问。

最佳答案

您可以使用函数作为替换来进行正则表达式替换:

repl=lambda x: x.group(1) + (x.group(2).rstrip('0').rstrip('.'))
re.sub('(?<!\d)(\d+)(\.\d*)(?!\d)',repl,string)

它肯定比复杂得多的 RE 更容易。前瞻现在是可选的,但它们不会改变您获得的匹配。

>>> for testcase in ('1','1.','1.0','1.01','1.01000','0.00','0.100','1.0*2.40*abc+1','100.000','100.0100','20.020','200.'):
... print('{:16s} --> {}'.format(testcase, re.sub('(?<!\d)(\d+)(\.\d*)(?!\d)',repl,testcase)))
...
1 --> 1
1. --> 1
1.0 --> 1
1.01 --> 1.01
1.01000 --> 1.01
0.00 --> 0
0.100 --> 0.1
1.0*2.40*abc+1 --> 1*2.4*abc+1
100.000 --> 100
100.0100 --> 100.01
20.020 --> 20.02
200. --> 200

关于Python:从字符串中的 float 中删除 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31077475/

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