如何在Python中提取最后一行文本(不包括新行)?

时间:2015-03-17 16:41:51

标签: python extract

TEXTFILE:

1
2
3
4
5
6
\n
\n

我知道lines[-1]可以获得最后一行,但我想忽略任何新行并获取最后一行文本(在本例中为6)。

6 个答案:

答案 0 :(得分:2)

关于内存的最佳方法是耗尽文件。像这样:

with open('file.txt') as f:
  last = None
  for line in (line for line in f if line.rstrip('\n')):
    last = line

print last

虽然可以做得更优雅。一种稍微不同的方法:

with open('file.txt') as f:
  last = None
  for last in (line for line in f if line.rstrip('\n')):
    pass

print last

答案 1 :(得分:2)

读取整个文件,然后根据换行符分割readed文件,并创建非空元素列表。然后打印列表中的最后一个元素。

with open('file') as f:
    print([i for i in f.read().split('\n') if i][-1])

答案 2 :(得分:0)

对于一个小文件,你可以读取所有行,丢弃任何空行。请注意,我已经使用内部生成器去除线条,然后将它们排除在外部。

with open(textfile) as fp:
    last_line = [l2 for l2 in (l1.strip() for l1 in fp) if l2][-1]

答案 3 :(得分:0)

with open('file') as f:
    print([i for i in f.read().split('\n') if i != ''][-1])

这只是对Avinash Raj的答案的编辑(但由于我是一个新帐户,我无法评论它)。这将保留数据中的任何None值(即,如果最后一行中的数据为“None”,它将起作用,但根据您的输入,这可能不是问题)。

答案 4 :(得分:0)

with open('path/to/file') as infile:
    for line in infile:
        if not line.strip('\n'):
            continue
        answer = line
    print(answer)

这将在结尾打印6换行符。您可以决定如何剥离它。以下是一些选项:

  • answer.rstrip('\n')删除尾随换行符
  • answer.rstrip()删除尾随空格
  • answer.strip()删除任何周围的空格

答案 5 :(得分:-1)

with open ('file.txt') as myfile:
  for num,line in enumerate(myfile):
    pass
print num