You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中如何移除字符串除最后一个小数点外的其余点并保留小数部分

移除字符串中除最后一个小数点外的所有点

需求说明

给定若干字符串,需要移除**最后一个小数点(作为小数分隔符)**之外的所有点,保留该小数点及其后的数字。

示例输入:

"8.2"
"88.2"
"888.2"
"8.888.2"
"8.888.888.2"

期望输出:

"8.2"
"88.2"
"888.2"
"8888.2"
"8888888.2"

解决方案

方法一:字符串拆分拼接(直观易懂)

核心思路是找到最后一个小数点的位置,把字符串拆成「小数点前的部分」和「小数点及之后的部分」,将前半部分的所有点移除后,再和后半部分拼接。

以Python为例:

def clean_extra_dots(s):
    last_dot_pos = s.rfind('.')
    if last_dot_pos == -1:
        return s
    # 前半部分去点,后半部分保留原样
    return s[:last_dot_pos].replace('.', '') + s[last_dot_pos:]

# 测试示例
test_cases = [
    "8.2",
    "88.2",
    "888.2",
    "8.888.2",
    "8.888.888.2"
]
for case in test_cases:
    print(f'"{clean_extra_dots(case)}"')

方法二:正则表达式替换(简洁高效)

用正则匹配所有「后面还存在小数点」的点,直接替换为空,剩下的就是最后一个需要保留的小数点。

以JavaScript为例:

const testCases = [
    "8.2",
    "88.2",
    "888.2",
    "8.888.2",
    "8.888.888.2"
];

testCases.forEach(str => {
    const result = str.replace(/\.(?=.*\.)/g, '');
    console.log(`"${result}"`);
});

正则解释:\.(?=.*\.) 里的(?=.*\.)是正向预查,确保当前匹配的小数点后面还有至少一个小数点,精准定位所有需要移除的多余点。

内容的提问来源于stack exchange,提问作者Va SA

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 20:51:33