如何从字符串中提取数字并与其他值进行比较?

2024-05-19 13:08:29 发布

您现在位置:Python中文网/ 问答频道 /正文

有这样一根线:

server volume1 0%              
server volume2 10%              
server2 volume1 15%

是否可以只选择那些超过(例如)10%的

要获取百分比,我使用以下正则表达式:

match = re.findall("\d+%", string)

输出如下:

['0%', '10%', '15%']

但是我怎么能用它来运作呢

所需的输出可以是这样的:

warning: server.volume2 = 10%, server2.volume1 = 15%

Tags: restringservermatch百分比warningfindallvolume1
2条回答

在编程时,百分比通过将数字除以100来转换为小数,这样在用于算术时,它们表现良好。例如,如果你想要10%1000,你可以通过0.1*1000=100得到它,也就是说,你把10%翻译成0.1

所以你能做的就是

match = re.findall("\d+%", string)
match2 = [int(x.replace('%', ''))/100 for x in match]

然后,您可以将服务器卷分配给这些数字,并轻松检查volume > 0.1(或您希望设置的任何边界)

那么,你完成了一半的工作。你把它们列在了一个名单上,但是,我担心你需要改变这一点。。。 因为您不存储该值包含的卷, 解决办法是:

string = """server volume1 10%
server volume2 5%
server2 volume1 15%""" # replace with real string
finalString = "warning: "
matchArr = string.split("\n")
for i in matchArr:
  tmpMatchArr = i.split(" ")
  for i in range(0, len(tmpMatchArr)):
    if int(tmpMatchArr[2].replace("%", "")) < 10:
      break
    if i == 2:
      finalString += " = " + tmpMatchArr[i] + ", "
    elif i == 1:
      finalString += tmpMatchArr[i]
    else:
      finalString += tmpMatchArr[i] + "."
  
print(finalString);

这会自动选择大于10的进位,若要更改它,请更改数字10。 我测试了它,它工作了;如果它不符合或不符合您的要求,请发表评论,我将提供帮助

相关问题 更多 >