如何在单独的行上打印列表的每个单独元素,并在元素之前打印元素的行号?还将从文本文件中检索列表信息。
到目前为止,我有,
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="")