从列表中删除字符串并返回最大值
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 和 int
s。同样出于某种原因,如果我尝试将其放入循环中 (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'
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 和 int
s。同样出于某种原因,如果我尝试将其放入循环中 (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'