[英]How to print numbers at the end of the line?
我有一个正在读取的文件。
我需要 output 文件的副本,其中行号只是附加到每行的末尾。
我尝试了以下代码,但无法使其工作:
with open('s.txt', 'r') as f, open("1.txt", "w") as out:
abc_list = [[float(n) for n in line.split()] for line in f]
for i,line in enumerate(abc_list):
out.write('{i+0:2}\n'.format(line.rstrip('\n')))
输入文件包含类似于以下的数据:
1 2
5 6
25 85
显示 output 文件的内容应该是什么:
1 2 1
5 6 2
25 85 3
我收到以下错误:
AttributeError: 'list' object has no attribute 'rstrip'
您无需致电line.rstrip()
。 此时line
是一个数字列表,而不是输入文件中的一行。 您应该遍历数字并在没有换行符的情况下编写每个数字。
然后将i
写入行尾的文件。
如果您希望行号从 1 开始,请将其用作enumerate()
的参数。
with open('s.txt', 'r') as f, open("1.txt", "w") as out:
abc_list = [[float(n) for n in line.split()] for line in f]
for i,nums in enumerate(abc_list, 1):
for n in nums:
out.write(str(n) + ' ')
out.write('{i:2}\n'.format(i))
您还可以避免创建所有行的列表。
with open('s.txt', 'r') as f, open("1.txt", "w") as out:
for i, line in enumerate(f, 1):
nums = [float(n) for n in line.split()]
for n in nums:
out.write(str(n) + ' ')
out.write('{i:2}\n'.format(i))
我得到了KeyError: 'i'
和 Barmar 的回答。我现在修好了。 谢谢您的帮助
with open('s.txt', 'r') as f, open("1.txt", "w") as out:
for i, line in enumerate(f, 1):
nums = [float(n) for n in line.split()]
for n in nums:
out.write(str(n) + ' ')
out.write(f'{i+0:2}\n')
以下 function 将 append 行号添加到文件每一行的末尾:
def get_suffixed_iterator(rf, sep =" "):
sep = str(sep)
rf = iter(rf)
rf = map(str, rf)
rf = map(str.strip, rf)
for num, text in enumerate(rf, 1):
yield text + sep + str(num)
下面,我们测试function:
f = ["orange\n\n", "eggs", "\n\napple\n\n\n"]
for lin in get_suffixed_iterator(f):
print(lin)
with open('readme.txt', 'r') as rf, open("writeme.txt", "w") as wf:
it = append_line_numbers(rf)
for line in it:
print(line, file=wf, end="\n")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.