我试图从任意文本中提取两个值,以可变的方式格式化。这两个值是不同的,我想根据附近的sring来区分它们,比如说“DDT”和“EEG”。下面是一些如何格式化字符串的示例。你知道吗
This contains 42.121% DDT and 2.1% EEG
Now with DDT: 12% EEG: 23.2%
47 DDT 22 EEG
EEG N/A DDT 43
5% EEG 20% DDT and more
本质上,我需要能够选择前面和后面都有标识符的值。你知道吗
我一直在使用两个选择器之间的|来捕获每个值的两个“案例”,但我遇到了问题。我想防止regex在第二个示例行中选择“12%EEG”。我试着用消极的眼神和积极的眼神,但不能让它起作用。你知道吗
这里是正则表达式选择只是滴滴涕
(?<=eeg)(\d{1,3}\.?\d{1,6}).{,10}?ddt|ddt(?!.*eeg).{,10}?(\d{1,3}\.?\d{1,6})
这是我得到的最接近的,但它仍然不能正常工作。此版本与“20%滴滴涕”不匹配
我原来的正则表达式没有使用lookbehinds,但在某些情况下也失败了。你知道吗
(?:(?:(\d{1,3}\.?\d*)[^(?:eeg)]{0,10}?ddt)|(?:ddt[^(?:eeg)]{0,10}?(\d{1,3}\.?\d*)))
我最初的方法无法识别像这样格式的23.2%的EEG字符串。”滴滴涕:12%脑电图:23.2%“
我不确定这种类型的选择器是否可以与regex一起使用,但是我想使用regex来矢量化这个提取。我有一个函数可以很好地描述这些字符串,但在大型数据集(约100万条记录)上速度非常慢。regex运行很快,很容易应用于向量,这就是为什么我要使用它。如果有其他建议来解决这个问题与NLP或numpy/pandas功能,我也愿意接受这些。你知道吗
至少在这些情况下,您可以尝试以下操作:
1/找出谁是第一个脑电图或滴滴涕:
2/拔出所有的号码:
要摆脱N/A,您可以向\u numeric申请:
现在您必须重新排列这些列以匹配其各自的DDT/EEG:
这里
s
是原始系列/列:这假设DDT和EEG都存在,您可能需要找出不存在这种情况的行(只有DDT/EEG中的一个)。。。你知道吗
相关问题 更多 >
编程相关推荐