微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何将行号添加到多行字符串

如何解决如何将行号添加到多行字符串

我有一个如下所示的多行字符串:

txt = """
some text

on several

lines
"""

如何打印此文本,使每行以行号开头?

解决方法

这可以通过结合split("\n")join(\n)enumerate和列表理解来完成:

def insert_line_numbers(txt):
    return "\n".join([f"{n+1:03d} {line}" for n,line in enumerate(txt.split("\n"))])

print(insert_line_numbers(txt))

它产生输出:

001 
002 some text
003 
004 on several
005 
006 lines
007 

,

我通常使用带有函数属性的正则表达式替换:

def repl(m):
    repl.cnt+=1
    return f'{repl.cnt:03d}: '

repl.cnt=0          
print(re.sub(r'(?m)^',repl,txt))

打印:

001: 
002: some text
003: 
004: on several
005: 
006: lines
007: 

这可以让您轻松地对仅包含文本的行进行编号:

def repl(m):
    if m.group(0).strip():
        repl.cnt+=1
        return f'{repl.cnt:03d}: {m.group(0)}'
    else:
        return '(blank)'    

repl.cnt=0  
print(re.sub(r'(?m)^.*$',txt))

打印:

(blank)
001:    some text
(blank)
002:    on several
(blank)
003:    lines
(blank)
,

我是这样做的。只需将文本分成几行即可。添加行号。使用format打印int行号和string.有2个占位符,.之后有一个空格

count = 1
txt = '''Text
on
several
lines'''
txt = txt.splitlines()
for t in txt:
    print("{}{}{}{}".format(count,"."," ",t))
    count += 1

输出

1. Text
2. on
3. several
4. lines
,
for n,i in enumerate(txt.rstrip().split('\n')):
    print(n,i)
0 
1 some text
2 
3 on several
4 
5 lines

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。