基于非正则字符在Python中替换字符串

22 投票
3 回答
28744 浏览
提问于 2025-04-16 12:56

有没有办法创建一个正则表达式,用来找到不在特定字符集合中的字符呢?

与其列出一大堆要排除的字符并进行替换,不如让我允许一部分特定的字符,然后替换掉那些不在这个集合中的字符,这样会简单一些。

我的字符集合是这样的: [.a-zA-Z0-9]

我想做的事情大概是这样的:

clean_filename = re.sub(r'([.a-zA-Z0-9])', "_", filename)

显然,这段代码会替换掉我想保留的字符,那有没有办法替换掉不在这个集合中的字符呢?

3 个回答

3

试试这个:

re.sub(r'[^a-zA-Z0-9]', "_", filename)
4

在编程中,有时候我们会遇到一些问题,特别是在使用某些工具或库的时候。比如,有人可能在使用一个叫做“库”的东西时,发现它的某些功能没有按照预期工作。这种情况可能让人感到困惑,因为我们可能不知道问题出在哪里。

通常,解决这类问题的第一步是仔细查看错误信息。错误信息就像是程序在告诉我们哪里出了问题。我们需要认真阅读这些信息,看看它们是否能给我们一些线索。

另外,很多时候,网上会有其他人遇到类似的问题,他们可能在论坛上分享了他们的解决方案。我们可以通过搜索这些问题,找到别人是怎么解决的,从中获得启发。

最后,保持耐心和好奇心是很重要的。编程就像解谜一样,有时候需要不断尝试和调整,才能找到正确的答案。

clean_filename = re.sub(r'[^.a-zA-Z0-9]', "_", filename)
35

没错,可以使用 ^ 这个否定的“修饰符”: r'[^.a-zA-Z0-9]'

撰写回答