如何使用正则表达式在字符串前获取一定数量的字符? (Python)

问题描述 投票:0回答:2

我正试图从Indeed职位描述中汲取多年经验。几乎所有的描述都列出了这样的经历:“ 0-2年”或“ 2+年”或“ 2年”。无论如何列出,“年”一词都在所需的经验年数之后。

我如何在单词“ years”之前返回一定数量的字符(在这种情况下,最大为4个字符,包括空格)以捕获数字?

我计划提取数字(如果它是字符串形式),然后对它们求平均以返回一个要在机器学习模型中使用的值。我正在删除任何需要两位数经验值(例如10)的职位描述,因此这不会成为问题。

例如:

示例描述:“理想的候选人将具有0-2年的Apache Spark经验。”

所需的输出:

或者作为字符串的“ 0-2”,这样我就可以手动提取数字,甚至更好的是数字列表[0,2]

python regex text-mining
2个回答
0
投票

我认为此正则表达式可以满足您的需求:

import re

s = "Ideal candidate will have 0-2 years of experience with Apache Spark."
matches = re.findall("([^\s]+) years", s)
print(matches)

结果:

['0-2']

0
投票

对于您的三种用例,这将起作用:

In [54]: l
Out[54]: ['0-2 years', '2+ years', '2 years']

In [53]: for s in l:
    ...:     print(re.findall(r'(\d+)(?=[\-\d+|\syear])',s))
    ...:
['0', '2']
['2']
['2']

您必须将-放在字符类[]中,或使用\对其进行转义。

[1]有一个积极的前瞻?=,是一个连字符和一个数字,或者2)一个空格和单词“ year”。

© www.soinside.com 2019 - 2024. All rights reserved.