weixin_43392642 2021-05-09 17:55 采纳率: 100%
浏览 850
已采纳

python-正则表达式

问题困扰了很长时间,希望能够得到高手的帮助。

问题:用正则表达式提取某一字段(纯文本)中的NIHSS评分,新建个字段放入。
提取内容:当文字中出现“NIHSS”时,后面因为书写习惯,会有不同数量的标点或文字,当第一次出现数字时,就是抓取的要点。

我目前的工作进度:
实例:
1、我的代码
def nihss(x):
    nihss=re.findall(r"(?<=NIHSS).*?\d+\.?\d*",x["病程详情(日常)"])
    return nihss
df["NIHSS"]=df.apply(nihss,axis=1)

2、被提取字段的内容示例
双侧肱二头肌反射、肱三头肌反射对称存在,双侧膝反射、踝反射消失,双侧Babinski征阴性,双侧Chaddock征阴性,双侧Hoffman征阴性,余查体未能配合。2019年1月,NIHSS评分:8分,2019年3月,NIHSS住院评分得5分,。辅助检查:颅脑CT(2019-04-07)

设想的提取结果:第一次:8;第二次:5


问题复述:就是把一段文字中的出现"HIHSS"后出现的第一个数字提取出来,在"HIHSS"后和数字之间可能会有不同的文字和标点符号,一段文字中可能有好几个NIHSS评分,谢谢。

如问题得到解决,可以商定一定的酬劳作为补脑费用[face]qq:21.gif[/face]

  • 写回答

11条回答 默认 最新

  • 关注
    import re
    
    x = "双侧肱二头肌反射、肱三头肌反射对称存在,双侧膝反射、踝反射消失,双侧Babinski征阴性,双侧Chaddock征阴性,双侧Hoffman征阴性,余查体未能配合。2019年1月,NIHSS评分:8分,2019年3月,NIHSS住院评分得5分,。辅助检查:颅脑CT(2019-04-07)"
    
    nihss=re.findall(r"NIHSS.*?(\d+\.?\d*)", x, re.S)
    print(nihss) # ['8', '5']
    # 如果需要转成数值类型
    nihss = list(map(float,nihss))
    print(nihss) # [8.0, 5.0]
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(10条)

报告相同问题?

悬赏问题

  • ¥15 matlab中使用gurobi时报错
  • ¥15 WPF 大屏看板表格背景图片设置
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂