【问题标题】:How to take numbers from a string and compare with other values?如何从字符串中获取数字并与其他值进行比较?
【发布时间】:2021-05-20 06:52:30
【问题描述】:

有这样一个字符串:

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%

【问题讨论】:

    标签: python list numbers


    【解决方案1】:

    在编程时,百分比转换为小数,而不是通过将数字除以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(或您希望设置的任何边界)

    【讨论】:

      【解决方案2】:

      所以,你已经完成了一半的工作。您将它们列在列表中,但是,我担心您需要更改它... 因为您不存储该百分比包含哪个卷, 一个解决方案是:

      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。 我测试了它,它有效;如果它不满足您的要求,请发表评论,我会提供帮助!

      【讨论】:

        猜你喜欢
        • 2013-08-21
        • 2018-05-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-08-29
        • 2015-11-30
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多