繁体   English   中英

从python输出的变量中输出最后一行

[英]print last line from the variable output in python

我正在寻找从line变量产生的最后一行

bash-4.1$ cat file1_dup.py
#!/usr/bin/python
with open("file1.txt") as f:
  lines = f.readlines()
  for line in lines:
    if "!" in line:
      line = line.split()[-1].strip()
      print line

我得到的输出如下。

-122.1058
-123.1050
-125.10584323

我想要打印的结果是

-125.10584323

而且,我从一些咯咯地笑声中得到了提示,并获得了期望的输出,但这一点对我来说似乎有点复杂。

bash-4.1$ cat file2_dup.py
#!/usr/bin/python
def file_read_from_tail(fname,n):
  with open(fname) as f:
    f=f.read().splitlines()
    lines=[x for x in f]
    for i in range(len(lines)-n,len(lines)):
      line = lines[i].split()[-1]
      #line = line.split()[-1]
      print line
file_read_from_tail('file1.txt',1)

希望以此为继。

bash-4.1$ ./file2_dup.py
-125.10584323

PS:我只是出于以下目的而借用了这个问题: 如何使用python读取特定行并在该行中打印特定位置

您可以像这样测试新行是否小于之前的行

#!/usr/bin/python
res_line = 0
with open("file1.txt") as f:
  lines = f.readlines()
  for line in lines:
    if "!" in line:
      line = float(line.split()[-1].strip())
      if res_line > line:
          res_line = line
  print res_line

编辑:

您可以使用enumerate()获取循环中索引的行:

with open("file1.txt", "rt") as f:
    lines = f.readlines()
    for line, content in enumerate(lines):
        # apply your logic to line and/or content here
        # by adding ifs to select the lines you want...
        print line, content.strip() # do your thing

将会输出(只是为了说明,因为我没有在上面的代码中指定任何条件):

0 -122.1058
1 -123.1050
2 -125.10584323
3 

或者通过使用以下代码在listcomp中选择带有条件的特定行:

with open("file1.txt", "rt") as f:
    lines = f.readlines()
    result = [ content.strip() for line, content in enumerate(lines)
         if line == len(lines) - 2] # creates a list with
                                    # only the last line
    print result[0]

将输出:

-125.10584323

请尝试以下操作:

print [line.split()[-1].strip() for line in lines if '!' in line][-1]

我看到了一种更好的方法,即创建一个空列表并附加条件中的值,然后选择您所选择的索引并列出输出,从某种意义上讲,它可以用于您所感兴趣的任何行,这是一个好方法需要选择。

让我们假设我要倒数第二行,那么可以将该值放到打印部分print(lst[-2]) ,它将打印第二行的最后一个索引。

#!/usr/bin/python
file = open('file1.txt', 'r')
lst = list()
for line in file:
    if "!" in line:
        x= line.split()
        lst.append(x[-1])

print(lst[-1])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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