基于非正则字符在Python中替换字符串
有没有办法创建一个正则表达式,用来找到不在特定字符集合中的字符呢?
与其列出一大堆要排除的字符并进行替换,不如让我允许一部分特定的字符,然后替换掉那些不在这个集合中的字符,这样会简单一些。
我的字符集合是这样的: [.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]'