我尝试通过 str.extract 方法从 Pandas 数据帧中通过换行符提取 1-n 行 splittet,它们位于“开始”(示例中的 SOMEWORD)和“停止”字(示例中的 SOME STOP WORD)之间,但它失败,结果只是 NaN。下面提供了示例。
我试图在 regex101.com 的帮助下构建正则表达式,并且在那里它可以工作,甚至当我在我的 jupyter 笔记本中从 regex101.com 复制自动生成的示例代码时,它也会按照我的预期提取行。
使用 pandas str.extract 函数的示例代码:
testInput = pd.DataFrame({'text': ['\nSOMEWORD\n---------- \nFirstline with some text\nSecondline with some text\nThirdline
with some text\nSOME STOP WORD\n-------------------\n']})
pattern = r'(?<=\nSOMEWORD\n----------\n)(\w.+?(?=\nSOME STOP WORD))'
test = testInput.iloc[0].str.extract(pattern)
test
输出:
text NaN
Name: 0, dtype: object
使用 regex101.com 的示例代码(我只包含链接,以便帖子不会太长。在站点上,您还可以复制自动生成的代码,该代码正在工作并且只提取开始词和停止词之间的行):https ://regex101.com/r/JM6Sgc/1
因此我的两个问题:
为什么我的正则表达式不能与 pandas str 提取函数一起使用
为什么我不想要跳脱\ n的大熊猫提取功能,但是,regex101网站藏汉在“普通”正则表达式的代码?示例模式:
模式 = r'(?<=\\nSOMEWORD\\n---------\\n)(\w.+)'
模式 = r'(?<=\nSOMEWORD\n---------\n)(\w.+)'
成功提取第一行:
无法提取第一行并输出 NaN:
智慧大石
相关分类