python - Python中是否有一种有效的方法来对括号之间的字符串进行子集化?
问题描述
med2['Medication'] = ["Terazosin Hydrochloride (Terazosin) oral capsule", "simvastatin oral tablet", "zithromax z-pak (azithromycin) oral tablet", "depo-medrol (methylprednisolone) injectable suspension", "zovirax topical (acyclovir topical) topical ointment", "nystatin oral suspension"]
med3 = pd.DataFrame(med2) # Made a dataframe to try to fix some error messages
med3 = med3['Medication'].str.lower()
我想做两件事:
- 选择药物名称(例如上面的“盐酸特拉唑嗪”)和
- 选择括号之间的通用名称(对于上面的示例,“特拉唑嗪”)。
对于#1,我列出了“停止”单词/字符(我的真实列表比上面的例子长):
stop = ['(', 'oral', 'nasal', 'inhalation', 'topical', 'sublingual', 'opthalmic', 'otic', 'rectal', 'injectable', 'transdermal', 'vaginal', 'intramuscular', 'dose', 'suspension', 'subcutaneous']
med3['MedShort'] = med3['Medication'][:stop]
对于#2,我制作了“索引”和“结束”:
Index = med3['Medication'].find('(')
End = med3['Medication'].find(')')
med3['MedGeneric'] = med3['Medication'][Index:End]
但是,天哪,它不起作用吗?你有什么建议?我会很感激!
编辑为一致的变量命名,并道歉。
为了澄清起见,药物治疗并不一致。大多数遵循“药物(通用)给药途径”的模式,但也有相当一部分遵循药物给药途径的模式。感谢您的耐心等待,抱歉我不清楚。\
解决方案
如果所有字符串都具有相同的结构,那么
string = "Terazosin Hydrochloride (Terazosin) oral capsule"
drug_name, rest = string.split(" (")
generic = rest.split(")")[0]
print(drug_name.lower(), generic.lower())
将输出terazosin hydrochloride
和terazosin
推荐阅读
- kubernetes - 创建命名空间后自动创建 Kubernetes 资源
- swift - SKTextureAtlas EXC_BAD_ACCESS
- ruby-on-rails - Rails、gems、require、zsh 和错误消息!由于与“要求”相关的问题,我无法加载我的应用程序
- c++ - 如何将空格、逗号和换行符分隔的整数从文件中读取到 C++ 中的向量数组中?
- smtp - 从 Payara 5 Java Mail 使用 GMail SMTP 的问题
- ruby-on-rails - ActionController::RoutingError (未初始化常量 Users::Confirmations) 错误的原因
- html - 将旋转文本居中
- laravel - 安装 Laravel 后出现“laravel:找不到命令”
- powershell - 从PowerShell中的文本文件获取多维数组
- c - 用C语言获取并显示结构数据类型的输入