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

在python中打印变量输出的最后一行,python,Python,我希望得到从行变量生成的最后一行 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 我得到的结果如下 我想要打印出来的结果是 -125.10584323 此外,

我希望得到从
变量生成的最后一行

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
我得到的结果如下

我想要打印出来的结果是

-125.10584323

此外,我从一些goghling和获取输出中得到了提示 我很想,但我觉得这有点复杂

这是我所希望的

附言:我只是出于兴趣借用这个问题:

您可以像这样测试新线路是否比以前的线路小

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

你可以像这样测试新的线路是否比以前的线路小

#!/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
请尝试以下操作:

print [line.split()[-1].strip() for line in lines if '!' in line][-1]
请尝试以下操作:

print [line.split()[-1].strip() for line in lines if '!' in line][-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
将输出(只是为了说明,因为我没有在上面的代码中指定任何条件):

或者在备选方案中,在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
编辑:

您可以使用
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
将输出(只是为了说明,因为我没有在上面的代码中指定任何条件):

或者在备选方案中,在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(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])

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

让我们假设我拥有最后一行,那么它可以恢复,将值放入打印部分
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])

O.苏莱曼。。这会多次打印输出,我试过了already@Karn... 你能提供这个文件的一个片段吗?我已经在我的原始问题中引用了这个链接,它将为你提供所有信息,请看你是否得到了。。这会多次打印输出,我试过了already@Karn... 你能提供一个文件的片段吗?我在我的原始问题中引用了这个链接,它将为你提供所有信息,请看你是否得到了。user1。。这个简单的打印0I添加的
float()
,因此比较有效。请再试一次这很有效。。你能解释一下代码,它是如何工作的吗。。特别是它的工作原理。。特别是
res_line=line
->res_line(用于存储最终结果的变量)将仅在line的值低于上次捕获的值(在for循环执行内部)时捕获line的值。如果行值为正值,则不会捕获任何值,除非您使用
res\u line=0
将第一行更改为另一个值开始。@progmatico,thnx用于解释用户1。。这个简单的打印0I添加的
float()
,因此比较有效。请再试一次这很有效。。你能解释一下代码,它是如何工作的吗。。特别是它的工作原理。。特别是
res_line=line
->res_line(用于存储最终结果的变量)将仅在line的值低于上次捕获的值(在for循环执行内部)时捕获line的值。如果行值为正数,它将不会捕获任何值,除非您将第一行更改为
res\u line=0
,以另一个值开始。@progmatico,thnx供您解释。我只是从最后一行中选择值,抱歉,我没有阅读您提供的链接。看起来您想用
过滤行并选择最小值…我只是从最后一行中选择值,抱歉我没有阅读您提供的链接。看起来您想用
过滤行并选择最小值。。。