如何在单独的行上打印列表的每个元素,前面是 python 中的行号



如何在单独的行上打印列表的每个单独元素,并在元素之前打印元素的行号?还将从文本文件中检索列表信息。

到目前为止,我有,

import sys
with open(sys.argv[1], 'rt') as num:
    t = num.readlines()
    print("n"[:-1].join(t))

目前给出的读数:

Blah, blah, blah
etc, etc, etc
x, x, x

但我想要这个读出:

1. Blah, blah, blah
2. etc, etc, etc
3. x, x, x

谢谢你的帮助。

您可以使用

enumerate()并使用str.rstrip()从字符串中删除所有类型的尾随空格。 如果您确定仅n换行符,也可以使用 rstrip('n')

for i,x in enumerate(t,1):
    print ("{0}. {1}".format(i,x.rstrip()))

似乎最容易使用 enumerate ,随时打印每一行:

import sys
with open(sys.argv[1], 'r') as num:
    for i,line in enumerate(num,1):
        print("%d. %s"%(i,line[:-1]))  #equivalent to `"{0}. {1}".format(i,line[:-1])`
当然,如果你想

使用join,你可以将整个东西包装在一个生成器中:

def number_lines(fname):
    with open(fname,'r') as f:
       for i,line in enumerate(f,1):
           yield "%d. %s"%(i,line[:-1])
print('n'.join(number_lines(sys.argv[1])))

使用fileinput.input可以逐行迭代文件。当fileinput.input返回下一行时,我们enumerate它来跟踪行号。由于输入已经包含换行符,因此我们在print方法中使用end="",因此它不会附加不必要的换行符。使用 format 将行号和内容转换为格式化表示。

import fileinput
for number, line in enumerate(fileinput.input(['some_file.txt']), 1):
    print('{0}. {1}'.format(number, line), end="")

相关内容

  • 没有找到相关文章

最新更新