繁体   English   中英

如何在行尾打印数字?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM