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

如何使用string.punctuation移除字符串标点但保留下划线?

问题:移除字符串中除下划线外的所有标点

你尝试用string.punctuation配合translate()方法移除字符串里的标点,但想要保留下划线,同时你疑惑自己写的这段代码是否正确:

fs = fs.translate({ord(i): None for i in string.punctuation if '_' not in string.punctuation})

首先得说,你的这段代码不正确。原因很简单:string.punctuation本身是包含下划线_的(它的完整内容是!"#$%&'()*+,-./:;<=>?@[\]^_{|}~`),所以`'_' not in string.punctuation`这个判断永远是`False`,最终生成的翻译表是空字典,根本不会移除任何标点。

正确的写法

我们需要做的是:遍历string.punctuation中的每个字符,只把不是下划线的字符加入到要移除的映射里。代码应该这样写:

import string

fs = fs.translate({ord(i): None for i in string.punctuation if i != '_'})

这样一来,所有string.punctuation里除了下划线的标点,都会被映射为None(也就是被移除),而下划线会被保留下来。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 13:37:49