患某种疾病的患者

患者信息表: Patients

+--------------+---------+
| Column Name  | Type    |
+--------------+---------+
| patient_id   | int     |
| patient_name | varchar |
| conditions   | varchar |
+--------------+---------+
在 SQL 中,patient_id (患者 ID)是该表的主键。
'conditions' (疾病)包含 0 个或以上的疾病代码,以空格分隔。
这个表包含医院中患者的信息。

查询患有 I 类糖尿病的患者 ID (patient_id)、患者姓名(patient_name)以及其患有的所有疾病代码(conditions)。I 类糖尿病的代码总是包含前缀 DIAB1 。

按 任意顺序 返回结果表。

解题思路:

1.根据正则表达式-1

import re
# 有两种模式需要匹配,第一种是以DIAB1开头的字符均可以,第二种空格后是DIAB1
pattern = r'^DIAB1\w*|[\w*\s\w*]*\sDIAB1'
patients = patients[patients['conditions'].str.match(pattern)]

2.根据正则表达式-2

import re
# 单词边界(word boundary)指的是一个位置,它位于单词字符(字母、数字、下划线)和非单词字符之间。换句话说,它表示一个单词的开始或结束位置。
在正则表达式中,可以使用 \b 元字符来匹配单词边界。\b 可以出现在正则表达式的模式的开头或结尾,也可以出现在要匹配的文本中。
以下是一些示例说明单词边界的用法:
\bword\b:这个正则表达式匹配整个单词 'word',而不会匹配包含该单词的其他单词。
(\b|\s)word(\b|\s):这个正则表达式匹配独立的单词 'word',可以是作为一个单词的开头、结尾,或者前后有空白字符。
\b\d{3}\b:这个正则表达式匹配三位数的整数,确保其前后没有其他数字字符。
总之,单词边界在正则表达式中用于限定单词的开始和结束位置,可以帮助我们精确地匹配单词而不会匹配到其他部分。

patients = patients[patients["conditions"].str.contains(r"\bDIAB1", regex=True)]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值