从列表中删除字符串并返回最大值

Removing string from list and returning max value

import subprocess
awk1 = subprocess.check_output("awk '{print }' "+file+"").decode("utf-8")
print(awk1)

这段代码给出了我正在寻找的结果;我使用 AWK 是因为我发现提取 $2 - $5 比使用 Python.

更容易

当我打印 awk1 时,它给我;

HEADER
DESCRIPTION (can be over multiple lines)
TEST TYPE 
RESULTS (numbers below are just examples)
-999.00
-500
-100.15
+1
+23.111
+500

我想做的是确定是否有任何结果大于 -500。我尝试使用 max() 但这会抛出错误,因为我有 str 和 ints。同样出于某种原因,如果我尝试将其放入循环中 (for i in akw1 ....),它会垂直打印,例如;

1
0
0
.
1
5

Instead of 100.15

结果开头的行可以有不同的长度,结果中的行也可以包含字符串。删除字符串然后确定数字是否大于指定数量的最有效方法是什么?谢谢。

subprocess.check_output() 将 return bytes(类似于 str)。因此迭代它会给你每个单独的字符,例如"H",然后是 "E",然后是 "A",等等

你可以做的是先用换行符拆分它"\n"。然后迭代列表并尝试转换为 int。如果可以转换,检查它是否超过-500。否则如果无法转换,则忽略它并转到下一个。

from contextlib import suppress

awk1 = b"""HEADER
DESCRIPTION (can be over multiple lines)
TEST TYPE 
RESULTS (numbers below are just examples)
-999.00
-500
-100.15
+1
+23.111
+500"""

for text in awk1.decode().split(b'\n'):
    with suppress(Exception):
        if float(text) > -500:
            print("Found", text)
            break
else:
    print("Not found")

输出

Found b'-100.15'