删除行中的所有逗号字符,除非使用#thon python x开头

时间:2015-01-21 07:10:24

标签: python regex

我想从不以#

开头的行中删除所有逗号

例如:

a, b, c
#a, b, c

应该变成:

a b c
#a, b, c

我希望使用正则表达式

在一行中完成

类似的东西:

re.sub(r'(?!^\s*#) ...', "...", "a, b, c")

3 个答案:

答案 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

这将捕获以组中的#开头的行,并将捕获,的其余部分。