1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > python正则表达式提取字符串的字母_Python正则表达式提取一部分字符串

python正则表达式提取字符串的字母_Python正则表达式提取一部分字符串

时间:2019-04-27 22:28:58

相关推荐

python正则表达式提取字符串的字母_Python正则表达式提取一部分字符串

1要提取大量烧成的一部分。有一个目标词和之前和之后单词的数量上限。因此所提取的子必须包含单词之前和之后它的上界目标字一起。在之前和之后的部分可以包含少言,如果目标字更接近文本的开头或结尾。

进行了串

"Lorem存有胡萝卜,增强大学生开发者,但他们occaecat时间和活力,如劳动力和肥胖。多年来来,谁nostrud锻炼,学区工作,除非他们aliquip优势来自它。作业如果cupidatat消费者找到乐趣想成为一名足球cillum他要躲避痛苦,不会产生任何结果。excepteur cupidatat黑人就不是excepteur,是舒缓的灵魂,那就是,他们抛弃了那些谁是责怪你的烦恼的一般责任。"

目标的话,工作

words_before:5

words_after:2

应该返回['veniam, quis nostrud exercitation ullamco laboris nisi ut']

1个思想几个可能的模式,但没有一次成功。 1猜它也可以通过简单地遍历发射前,从目标背单词做。不过正则表达式肯定会令事情变得更容易。任何帮助,将不胜感激。

感谢所有的答案。 所有这些都按预期工作。 正则表达式对我来说最方便,因为我的字符串中填充了非字母字符!

如果要拆分单词,可以使用slice()和split()功能。 例如:

>>> text ="Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod

tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, qu

is nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu

fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in

culpa qui officia deserunt mollit anim id est laborum.".split()

>>> n = text.index('laboris')

>>> s = slice(n - 5, n + 3)

>>> text[s]

['veniam,', 'quis', 'nostrud', 'exercitation', 'ullamco', 'laboris', 'nisi', 'ut']

If you still want regex....

def find_context(word_, n_before, n_after, string_):

import re

b= '\w+\W+' * n_before

a= '\W+\w+' * n_after

pattern = '(' + b + word_ + a + ')'

print(re.search(pattern, string_).groups(1)[0])

find_context('laboris', 5, 2, st)

veniam, quis nostrud exercitation ullamco laboris nisi ut

find_context('culpa', 2, 2, st)

sunt in culpa qui officia

这似乎总是会给出5个之前和之后的2个。 我认为OP需要前后任意数字。 或者它实际上只是5或2?

@idjaw我做了一个更改,现在它是一个函数,可以输入参数值。

您也可以使用nltk和它的"一致"方法来接近它,受到Calling NLTK的一致性的启发 - 如何在使用的单词之前/之后获取文本?:

A concordance view shows us every occurrence of a given word, together

with some context.

import nltk

def get_neighbors(input_text, word, before, after):

text = nltk.Text(nltk.tokenize.word_tokenize(input_text))

concordance_index = nltk.ConcordanceIndex(text.tokens)

offset = next(offset for offset in concordance_index.offsets(word))

return text.tokens[offset - before - 1: offset] + text.tokens[offset: offset + after + 1]

text = u"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."

print(get_neighbors(text, 'laboris', 5, 2))

在目标词之前打印5个单词/令牌,在之后打印2个:

[u'veniam', u',', u'quis', u'nostrud', u'exercitation', u'ullamco', u'laboris', u'nisi', u'ut']

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。