我想从不以#
开头的行中删除所有逗号例如:
a, b, c
#a, b, c
应该变成:
a b c
#a, b, c
我希望使用正则表达式
在一行中完成类似的东西:
re.sub(r'(?!^\s*#) ...', "...", "a, b, c")
答案 0 :(得分:4)
非正则表达式方法:如果将splitlines()
与replace()
合并后该怎么办:
print '\n'.join(line.replace(',', '') if not line.startswith('#') else line
for line in data.splitlines())
演示:
>>> data = """
... a, b, c
... #a, b, c
... """
>>>
>>> print '\n'.join(line.replace(',', '') if not line.startswith('#') else line
... for line in data.splitlines())
a b c
#a, b, c
答案 1 :(得分:4)
很难处理正则表达式,但没有它就像
for line in lines:
if not line.lstrip().startswith('#'):
line = line.replace(',', '')
# do whatever with line
答案 2 :(得分:3)
你需要使用regex进行条件替换。然后python允许我们根据需要定义一个函数。参见下文。
import re
x="""a, b, c
#a, b, c"""
def repl(m):
if m.group(1):
return m.group(1)
else:
return ""
print re.sub(r"^(#.*)$|,",repl,x,flags=re.MULTILINE)
你可以使用re.sub.See演示这样做。
https://regex101.com/r/tX2bH4/60
这将捕获以组中的#
开头的行,并将捕获,
的其余部分。