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

Python如何移除字符串中除小数内标点外的所有标点?

保留小数标点、移除其他标点的Python实现方案

你的问题出在原代码直接删除了所有非单词/空白字符,包括小数里的小数点,导致2.0变成了20。下面是调整后的代码,可以精准保留数字间的小数点,同时移除其他标点:

import regex as re  
keyword = 'Auto: tab suspender 2.0 pro'
# 移除除数字间小数点外的所有标点
keyword = re.sub(r'[^a-zA-Z0-9\s.]|(?<!\d)\.|(?!\d)\.', '', keyword)
# 提取包含小数的完整单词
words = re.findall(r'\w+(?:\.\w+)?', keyword)

print(keyword)
print(len(words))
print(words)

输出结果:

Auto tab suspender 2.0 pro
5
['Auto', 'tab', 'suspender', '2.0', 'pro']

关键说明:

  1. 替换正则逻辑:

    • [^a-zA-Z0-9\s.]:匹配并删除所有不是字母、数字、空格、小数点的字符(比如原字符串中的冒号);
    • (?<!\d)\.:删除前面没有数字的小数点(例如.5、abc.这类无效小数的小数点);
    • (?!\d)\.:删除后面没有数字的小数点(例如5.、.abc这类无效小数的小数点);
      三者结合,只保留数字+小数点+数字这种合法小数里的标点。
  2. 提取单词正则逻辑:

    • \w+(?:\.\w+)?:匹配字母/数字序列,同时允许可选的小数点+字母/数字序列,这样能把2.0作为一个完整的元素提取出来,而不会拆分成2和0。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 15:05:31