我有一张这样的表:
head1 | head2 | head3
=======================
foo=bar | baz | quuux
是否有正则表达式,用一行破折号代替等号线,但仅在表格中留下其他等号?由短划线组成的线必须与由等号组成的线长度相等。
预期输出
head1 | head2 | head3
-----------------------
foo=bar | baz | quuux
我正在使用Python re库。
答案 0 :(得分:2)
是否有正则表达式,用一行破折号替换等号行
我会这样做,
>>> import re
>>> s = '''head1 | head2 | head3
=======================
foo=bar | baz | quuux'''
>>> for i in s.split('\n'): # Splits the input according to the newline character and iterate through the contents.
if re.match(r'^=+$', i): # If the item has only equal signs then
print(i.replace('=', '-')) # replace = with - dashes
else:
print(i) # else print the whole line
head1 | head2 | head3
-----------------------
foo=bar | baz | quuux
答案 1 :(得分:1)
答案 2 :(得分:1)
如果您只有以==
或foo=bar
开头的行,则可以使用正常的str.replace。
s="""
head1 | head2 | head3
=======================
foo=bar | baz | quuux
"""
out = ""
for line in s.splitlines(True):
if line.startswith("="): # or if line[0]== "="
out += line.replace("=", "-")
else:
out += line
print(out)
head1 | head2 | head3
-----------------------
foo=bar | baz | quuux
这应该包括你只有行中的=并且比正则表达式更有效的情况:
for line in s.splitlines(True):
if not line.rstrip().translate(None,"="): # or if line[0]== "="
out += line.replace("=","-")
else:
out += line
print(out)