gpt4 book ai didi

Python Pandas 使用正则表达式从包含字符串的列中提取单词

转载 作者:行者123 更新时间:2023-12-04 15:08:02 24 4
gpt4 key购买 nike

我有这个数据框(列是字符串):

        ORF                                             ORFDesc
3 b1731 succinate-semialdehyde dehydrogenase
4 b234 succinate-semialdehyde dehydrogenase
24 b2780 L-alanine dehydrogenase
27 b753 methylmalmonate semialdehyde dehydrogenase
29 b1187 pyrroline-5-carboxylate dehydrogenase
...............................................................
1922 b1124 probable epoxide hydrolase
1923 b2214 probable epoxide hydrolase
1924 b3670 probable epoxide hydrolase
1925 b134 probable epoxide hydrolase
2382 b2579 1,3,4,6-tetrachloro-1,4-cyclohexadiene hydrolase

我需要为 'ORFDesc' 的行获取 'ORF',其中包含带有“hydro”但只有 13 个单词人物。我解释一下,字长必须是13个字符,而不是整个描述。

我正在使用

df['IDClass'][df['ORFDesc'].str.contains("hydro", na=False)]

为了匹配包含“hydro”的行,但我需要拒绝长度为 != 13 的行。

我想使用正则表达式,这样我就可以创建一个新的列“单词”,例如:

ORF                                             ORFDesc                word
3 b1731 succinate-semialdehyde dehydrogenase dehydrogenase
4 b234 succinate-semialdehyde dehydrogenase dehydrogenase
24 b2780 L-alanine dehydrogenase dehydrogenase
27 b753 methylmalmonate semialdehyde dehydrogenase .
29 b1187 pyrroline-5-carboxylate dehydrogenase .
...............................................................
1922 b1124 probable epoxide hydrolase hydrolase
1923 b2214 probable epoxide hydrolase hydrolase
1924 b3670 probable epoxide hydrolase ....
1925 b134 probable epoxide hydrolase ..
2382 b2579 1,3,4,6-tetrachloro-1,4-cyclohexadiene hydrolase .

然后能够通过在“单词”列中使用长度来丢弃行。

会是什么图案?

编辑:

我已经试过了,但还是不行:

pattern = '\b(?=\w*hydro)\w+\b'

最佳答案

你可以使用

\b(?=\w{13}\b)\w*hydro

参见 regex demo

详情

  • \b - 单词边界
  • (?=\w{13}\b) - 正向前瞻,要求 13 个单词字符立即出现在当前位置的右侧,后跟单词边界
  • \w*hydro - 零个或多个单词字符,然后是 hydro

Python代码:

df['ORF'][df['ORFDesc'].str.contains(r"\b(?=\w{13}\b)\w*hydro", na=False)]

关于Python Pandas 使用正则表达式从包含字符串的列中提取单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65723255/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com