读取文本中的特定行并将数字和以下行相加

时间:2017-04-19 23:16:31

标签: python text sum line readline

嗨,我有一些功课,我得到了。我有一个用几行写的文本文件中的数字列表。我的项目要求我选择一个特定的行,然后选择一些行来总结它们。例如,从第4行总和下4行。 这是我现在尝试的代码

fichNbr = open("nombres.txt", "r")
ligneDepart = int(input("entrer la ligne de depart: "))
nb_lignes = int(input("entrer le nombre de ligne a lire: "))
somme3 = 0
for line in fichNbr:
    line = fichNbr.readline()
    print(line)
    for i in range(ligneDepart,(ligneDepart + nb_lignes),1):
        n = fichNbr.readline().split()
        for f in n:
                somme3 += int(f)
print(somme3)

2 个答案:

答案 0 :(得分:0)

我真的不知道你的代码做错了什么(有点急,所以没有足够的时间来分析对不起)但是如果你正在寻找一种代码,那就是你需要的东西(我想),这里是:

f = open("test.txt", "r")
start_line = input("line to start ") - 1
finish_line = input("line to finish ") - 1
soma = 0
for i, line in enumerate(f):
    if i >= start_line and i <= finish_line:
        soma += int(line)
print soma

只是一个简单的解释,枚举是一个内置函数,它将遍历文件f并返回一个包含行号(从零开始)的元组以及该行中的任何内容。您需要做的就是检查我是否等于或大于您想要读取的行,并且还要小​​于您想要读取的行。

希望有所帮助:)

答案 1 :(得分:0)

要从指定行执行所有行(包括给定行)的总和,行变量需要减去1.如果它不包含该行,则只需按原样使用变量。使用...打开文件,使其自动关闭,并选择读取(&#39; r&#39;)作为模式。创建一个变量来存储行并选择readlines()。这会将每一行存储到列表中的各自位置。

创建另一个变量来实际对行进行求和。使用与您关联的while循环给定起始行变量,只要它小于列表的长度,迭代列表将每行添加到sum变量(如使用nums所示)。

由于open()读取行的方式,它将所有内容作为字符串拉出来,最后是\ n。添加条带(&#39; \ n&#39;)以删除\ n并将其全部转换为整数。在行变量中添加1以正确迭代并结束循环。

def example(file_name, line):
    with open(file_name, 'r') as f:
        x = f.readlines()
    line = line - 1
    nums = 0
    while line < len(x):
        nums += int(x[line].strip('\n'))
        line += 1
    print(nums)

example("example.txt", 4)
# My example.txt file has a different number on each line in this order: 2, 4, 3, 7, 5, 6, 4

如果您只想在给定的行后面执行一定数量的行,请将此额外数字添加到函数中,然后将行变量添加到此额外变量BEFORE从行变量中减去1。在结束时使用此修改后的额外变量,而不是迭代列表的长度。

def example(file_name, line, end_line):
    with open(file_name, 'r') as f:
        x = f.readlines()
    end_line += line
    line = line - 1
    nums = 0
    while line < end_line:
        nums += int(x[line].strip('\n'))
        line += 1
    print(nums)

example("example.txt", 4, 2)
# My example.txt file has a different number on each line in this order: 2, 4, 3, 7, 5, 6, 4

同样,如果您不想包含给定的行,请不要减去1.