Python正则re.sub移除每行末尾逗号失效,仅移除最后一行逗号的问题
解决每行末尾逗号移除问题
问题描述
尝试用re.sub结合MULTILINE模式移除每行末尾的逗号,但当前代码仅移除了最后一行的逗号:
原代码:
import re x = """ A,B,C, 1,2,3, 4,5,6, 7,8,9, """ x = re.sub(",$","",x,re.MULTILINE) print(x)
当前输出:
A,B,C, 1,2,3, 4,5,6, 7,8,9
期望输出:
A,B,C 1,2,3 4,5,6 7,8,9
问题原因
Python的re.sub函数签名为re.sub(pattern, repl, string, count=0, flags=0),你之前的写法把re.MULTILINE传给了count参数(而非flags参数),导致MULTILINE模式未被正确启用——此时$仅匹配整个字符串的末尾,而非每行末尾。
正确解决方案
通过关键字参数传递flags,确保MULTILINE模式生效:
import re x = """ A,B,C, 1,2,3, 4,5,6, 7,8,9, """ # 使用关键字参数指定flags x = re.sub(",$", "", x, flags=re.MULTILINE) print(x)
或者显式传递count参数(设为0表示替换所有匹配项),再传递flags:
x = re.sub(",$", "", x, 0, re.MULTILINE)
执行后即可得到期望输出,所有行末尾的逗号都会被移除。
内容的提问来源于stack exchange,提问作者lucky1928
相关产品推荐
相关产品推荐

