从文本文件的特定部分制作列表

时间:2019-03-03 18:11:57

标签: python function loops text

嗨,我为自己做了这个小练习,我想提取出每行中的最后一个数字。在此文本文件中,该文件有5行,每行6个数字,中间用空格隔开。我做了一个循环,从第5个空格开始获取所选行的所有剩余字符。它适用于每行打印(findtext(0到3)),但如果最后一个数字少于3个字符,则最后一行除外……这是怎么回事?我不明白

text = open("text","r")
lines = text.readlines()

def findtext(c):
    count = 0
    count2 = 0

    while count < len(lines[c]) and count2<5:
        if lines[c][count] == " ":
            count2=count2+1

        count=count+1

    return float(lines[c][count:len(lines[c])-1])                   

print(findtext(0))

2 个答案:

答案 0 :(得分:0)

您提出的解决方案对我来说似乎不是Pythonic。

with open('you_file') as lines:
    for line in lines:
        # Exhaust the iterator
        pass
    # Split by whitespace and get the last element
    *_, last = line.split()
    print(last)

几件事:

  • 在上下文管理器中访问文件,因为这可以确保资源被正确破坏
  • 如果不需要,不要跟踪索引,这会使代码更难阅读
  • 使用split而不是计算文字的空白字符

答案 1 :(得分:0)

with open('file') as f :
    numbers = f.readlines()

last_nums = [ line.split()[-1] for line in numbers ]

line.split()将使用空格作为分隔符将字符串拆分为列表的元素(如果未在其中添加任何参数), [-1]将为您获取此列表的最后一个元素