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

时间:2017-11-13 10:34:49

标签: 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

  

此外,我得到了一些goghling的提示并得到输出   我希望这一点对我而言似乎有点复杂。

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:我只是为了兴趣而借用这个问题: how to read a specific line and print a specific position in this line using python

4 个答案:

答案 0 :(得分:2)

您可以测试新行是否像之前的那样

#!/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

答案 1 :(得分:1)

编辑:

您可以使用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

答案 2 :(得分:0)

尝试以下方法:

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

答案 3 :(得分:0)

我看到一个更好的方法是创建一个空列表并附加值来自条件,然后选择你选择的索引并列出输出,这是好的,因为它可以用于你的任何一行你需要选择的内容。

让我假设我是最后一行,然后它可以恢复将值放在打印部分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])