fatesses 2019-09-15 22:49 采纳率: 50%
浏览 207
已采纳

通过正则匹配后得到想要的数字后加入判定

通过前面的问题我得到了我想要的数字

import re
text = "May we stop to remember the 2996 people that died & the more than 6000 injured on #September11"

m = re.findall("(([a-zA-Z\\d\\,]+\\s){3})(died|injured)", text)

for i in range(0, len(m)):
    x = m[i][0]
    a = []
    z = m[i][2]
    for n in re.findall(r"\d+\.?\d*",x):
        a.append(n)
        a.append(z)
        print(a)

得到结论是个list

['2996', 'died']
['6000', 'injured']
该如何加入一个判定如果died人数大于20或injured人数大约50输出A
died人数大于10或injured人数大约30输出B
died人数大于5或injured人数大约10输出C
  • 写回答

1条回答 默认 最新

  • threenewbee 2019-09-16 09:19
    关注
    import re
    text = "May we stop to remember the 2996 people that died & the more than 6000 injured on #September11"
    
    m = re.findall("(([a-zA-Z\\d\\,]+\\s){3})(died|injured)", text)
    
    for i in range(0, len(m)):
        x = m[i][0]
        a = []
        z = m[i][2]
        for n in re.findall(r"\d+\.?\d*",x):
            if z == 'died':
                if int(n) > 20:
                    a.append('A')
                elif int(n) > 10:
                    a.append('B')
                elif int(n) > 5:
                    a.append('C')
                else:
                    a.append('D')
            elif z == 'injured':
                if int(n) > 50:
                    a.append('A')
                elif int(n) > 30:
                    a.append('B')
                elif int(n) > 10:
                    a.append('C')
                else:
                    a.append('D')
            a.append(z)
            print(a)
    

    更新的代码

    import re
    text = "May we stop to remember the 2996 people that died & the more than 6000 injured on #September11"
    
    m = re.findall("(([a-zA-Z\\d\\,]+\\s){3})(died|injured)", text)
    
    intensity = 'D'
    for i in range(0, len(m)):
        x = m[i][0]
        a = []
        z = m[i][2] 
    
        for n in re.findall(r"\d+\.?\d*",x):
            if z == 'died':
                if int(n) > 20:
                    intensity = 'A'
                elif int(n) > 10 and ord(intensity) > 66:
                    intensity = 'B'
                elif int(n) > 5 and ord(intensity) > 67:
                    intensity = 'C'
            elif z == 'injured':
                if int(n) > 50:
                    intensity = 'A'
                elif int(n) > 30 and ord(intensity) > 66:
                    intensity = 'B'
                elif int(n) > 10 and ord(intensity) > 67:
                    intensity = 'C'
            a.append(n)
            a.append(z)
            print(a)
    print(intensity)
    

    ['2996', 'died']
    ['6000', 'injured']
    A

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)