从句子python中获取数字

时间:2016-11-28 08:12:42

标签: python regex string nltk

如何从句子中获取数据?

为例子 我有这句话

4 bedroom 2 bath, 1469 sq
然后我做了搜索词' bath'在句子中,但从那句话我想得到数字' 2'因为这是我的数据。

我怎样才能把数字' 2'从那句话?

谢谢

4 个答案:

答案 0 :(得分:1)

您可以在捕获组中使用简单的正则表达式:

import re
s= "3 roof 4 bath"
search_word = "bath"
res = re.search(r'(\d+)\s*{0}'.format(re.escape(search_word)), s)
if res:
    print(res.group(1))

请参阅Python demo

<强>详情:

  • (\d+) - 第1组:一个或多个数字被捕获到第1组(注意:如果该数字可以包含逗号或句点,请使用[\d,.]+代替\d+,或者更多精确\d+(?:[,.]\d+)*
  • \s* - 0+ whitespaces
  • {0}' - a placeholder for the search word whose chars are escaped with re.escape()`以便匹配,即使其中有特殊的正则表达式字符

要访问数字,请在匹配数据对象上使用.group(1)

答案 1 :(得分:0)

如果你总是有这样的结构:

N word N word, N word

您可以按空格“”拆分并获取2元素。

print str.split(sentence)[2]

答案 2 :(得分:0)

前瞻性断言的正则表达式:

re.search(r"[\d]+(?=\s+bath)", "3 roof 4 bath")

答案 3 :(得分:0)

对我来说明确答案是:

a = '4 bedroom 2 bath, 1469 sq'
regex = r'\b (\d*) (bath)\b'
b = re.search(regex, a).groups()
b[0]
2