判断一个列表中的字符,是否在另一个列表中的方法

判断一个列表中的字符,是否在另一个列表中的方法

这是一个非常不错的方法,但是有些遗憾的是,无法将被查找的内容拼接在列的后面

searchfor = df2['活性成分'].tolist() #将被查找的series做成列表
searchfor='|'.join(searchfor) #利用join把列表用"|"拼接起来得到一个在contains中能用的串
df3[df3['名称'].str.contains(searcher)]#就可以提取到所要的结果了

这其中有个坑,searcher中是一个非常大的串,这个串里面可能有括号这种字符,括号必须成对出现,如果不成对出现的话对出现一个错误 error: missing ), unterminated subpattern at position 3231
例子:

ss1='肠内营养乳剂(TPF-T)|肠内营养混悬液(TPF-DM)|肠内营养混悬液(TPF-FOS)|复方营养混悬剂|维生素类制剂'
#注意,第二个肠内混悬液的前后括号不一样,一个是半角,一个是全角,再使用.str.contains(searcher)的时候就报错了。


构造一个错误的示例:
df=pd.DataFrame(data=['氯化钾(片)[500mg*48]', '氯化钾(针)[1g:10ml]', '氯化钾注射液(大冢)[1g:10ml]'],columns=['名称']) #源字符集
ss1='氯化钾(针)|氯化钾(片)' #要查找的字符集

df[df['名称'].str.contains(ss1)]#返回查找结果
报错:error: missing ), unterminated subpattern at position 3

问题:ss1中的串有不匹配的括号,一个全角和一个半角匹配了,半角被识别为没有配对。
解决办法:加一个转义符号,就可以解决:ss1='氯化钾\(针)|氯化钾(片)' #要查找的字符集

但是:如果我的ss1非常大,有几百几千个字符集,想找到这个不匹配的括号是很难的,而且报错也不一定就能识别是这个位置出了错,有没有什么更好的办法?让contains把括号认为是一般的字符而不是特殊字符?
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值