使用Python正则表达式移除连字符前后多余空格的方法
如何清除连字符前后的空格
问题描述
需要实现同时移除连字符(-)前后空格的效果,现有代码仅能移除连字符前方的空格,原有代码如下:
#!/usr/bin/python3 import re test_strings = ["(1973) -trailer.mp4", "(1973)- fanart.jpg", "(1973) - poster.jpg"] for i in test_strings: res = re.sub(' +-', '-', i) print (res)
问题原因
原有正则规则' +-'只会匹配「1个及以上连续空格 + 连字符」的片段,替换操作仅会删除连字符前面的空格,连字符后方的空格没有被纳入匹配范围,自然无法被清除。
修正方案
调整正则匹配规则,把连字符前后的空格都纳入匹配范围,统一替换为单个连字符即可,修正后完整代码:
#!/usr/bin/python3 import re test_strings = ["(1973) -trailer.mp4", "(1973)- fanart.jpg", "(1973) - poster.jpg"] for i in test_strings: # 匹配连字符前后0个及以上的普通空格,替换为单个连字符 res = re.sub(r' *- *', '-', i) print(res)
如果需要兼容制表符、换行符等其他类型的空白字符,可以把正则里的普通空格替换为\s,匹配规则写为r'\s*-\s*'即可,适配场景更广。
代码运行后输出结果符合预期:
(1973)-trailer.mp4 (1973)-fanart.jpg (1973)-poster.jpg
内容的提问来源于stack exchange,提问作者bob_the_bob
相关产品推荐
相关产品推荐

