python:使用 string.punctuation 删除所有标点符号,除了其他几个

python: removing all punctuations using string.punctuation EXCEPT a few others

我正在尝试使用 string.punctuation 和代码删除名为 fs 的字符串中的标点符号:

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

文中有几条下划线(_)

如何实现我的代码,使其忽略下划线并删除所有其他下划线?

是不是像:

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

string.punctuation 本身只是一个字符串,因此我们可以使用该字符串的修改版本:{ord(i): None for i in string.punctuation.replace('_', '')}.

您正在寻找的更通用的技术是:if 将分别检查 for 每个 i 值,并抑制输出(键值对的dict) 当检查为假时。所以条件不应该像 ... if '_' not in string.punctuation,而是简单的 ... if i != '_'.