Python正则替换:保留空格数量仅移除字符串'no'
解决方法
你的问题出在正则表达式写错了:^\s.+no会匹配从字符串开头的空格开始,一直到no的所有内容,替换后开头的空格和no一起被删除,才得到' command'。
下面是两种符合需求的写法:
方法1:仅删除独立的no单词(保留所有原有空格)
如果只想删掉no这个单词,保留所有空格(包括no前后的空格),可以用单词边界匹配:
import re line = ' no command' line = re.sub(r'\bno\b', '', line) print(repr(line)) # 输出:' command'
\b是单词边界,确保只匹配单独的no,不会误删类似not里的no。
方法2:删除no及其后的空格(匹配你的期望输出)
如果要得到' command'(开头空格数量不变,command直接接在后面),可以把no和它后面的空格一起替换掉:
import re line = ' no command' line = re.sub(r'\bno\s+', '', line) print(repr(line)) # 输出:' command'
\s+匹配一个或多个空格,能把no后面的空格一并删除。
更简单的非正则写法
如果确定字符串里只有这一处no,直接用字符串替换更高效:
line = ' no command' line = line.replace('no ', '') # 替换'no '为空字符串 print(repr(line)) # 输出:' command'
内容的提问来源于stack exchange,提问作者superloopnetworks
相关产品推荐
相关产品推荐

