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']

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

  1. python多行字符串变单行_Python 正则表达式里的单行s和多行m模式

    Python 的 re 模块内置函数几乎都有一个 flags 参数,规定了正则匹配时的各种策略模式,其中有两个模式:单行(re.DOTALL, 或者re.S)和多行(re.MULTILINE, 或者r ...

  2. python中怎样使用re模块_PYTHON正则表达式 re模块使用说明

    首先,运行 Python 解释器,导入 re 模块并编译一个 RE: #!python Python 2.2.2 (#1, Feb 10 2003, 12:57:01) >>> im ...

  3. python获取字符串首字母_Python中用startswith()函数判断字符串开头的教程

    Python中用startswith()函数判断字符串开头的教程 函数:startswith() 作用:判断字符串是否以指定字符或子字符串开头 一.函数说明语法:string.startswith(s ...

  4. python获取字符串首字母_Python学习之字符串方法总结

    1.首字母大写 1 test = "abcdef" 2 v = test.capitalize() 3 print(v) 2.所有字母变小写,lower()只能对ASCII 也就是 ...

  5. python获取字符串首字母_Python字符串常用操作命令

    本代码测试采用python3解释器 1.find string = "i love python very much " 检查字符串是否包含在string中,如果包含则返回字符串开 ...

  6. python判断是否是小写字母_python判断字符串是字母 数字 大小写(转载)

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 今天遇到的字符串处理的问题,记录一下方便使用 str1 = input('请输入一个字符:') #初始化字符.数字.空格.特殊字符的计数 lowercas ...

  7. python取字符串首字母_python学习之字符串

    字符串的"魔法" capitalize():首字母大写 test = "aLex" # 首字母大写 v= test.capitalize() print(v) ...

  8. python整数类型的表示字母_Python学习笔记之基本数据类型-Number

    变量存储在内存中的值,这就意味着在创建变量时会在内存中开辟一个空间. 基于变量的数据类型,解释器会分配指定内存,并决定什么数据可以被存储在内存中.因此,变量可以指定不同的数据类型,这些变量就可以存储整 ...

  9. python内置字符串处理函数_Python内置的字符串处理函数

    生成字符串变量 str='python String function' 字符串长度获取:len(str) 例:print '%s length=%d' % (str,len(str)) 连接字符串 ...

最新文章

  1. ABP理论学习之工作单元(Unit of Work)
  2. 关于串口接收数据不全的问题
  3. gson 转换 ListMap 注意事项
  4. dialog像父activity传递参数
  5. 公司那些事-关于领导
  6. mysql联合索引like_MySQL全文索引、联合索引、like查询、json查询速度大比拼
  7. 专业能力与行业价值 IBM在华的商业人工智能实践
  8. linux mencoder,linux下mencoder的一些用法
  9. 燕秀工具箱图库lisp_AutoCAD模具设计插件燕秀工具箱 v2.81版(64/32bit)
  10. 免费稳定又好用的微信投票小程序,照片投票评选,视频投票打分小程序
  11. 沪深股票的复权计算(复权因子的应用)
  12. MPB:中科院南土所褚海燕组-结构方程模型在土壤微生态中的应用
  13. python一元线性回归算法,代码及参数更新动图展示
  14. iphone计算机怎么显示电话,苹果手机最近通话记录不显示怎么恢复
  15. python报考软考哪个比较好_软考考什么比较好?
  16. java实现手写签名,Android实现手写签名
  17. 计算机主机启动 显示器不动什么原因,电脑显示屏不亮但是主机已开机是什么原因?(五种解决方案)...
  18. 4、传输介质——光纤与光缆
  19. Python(x,y)安装
  20. python汇率编程_python – 确定汇率的算法

热门文章

  1. 图数据库 HugeGraph : IndexLabel
  2. Hbase1.2数据导入2.0
  3. 揭秘阿里云 RTS SDK 是如何实现直播降低延迟和卡顿
  4. 重磅发布:阿里云云安全中心一键防勒索功能上线!
  5. 从事前到事后,云数据库 Redis MongoDB 安全体系全揭秘!
  6. 流言终结者- Flutter和RN谁才是更好的跨端开发方案?
  7. 一份关于机器学习中线性代数学习资源的汇总
  8. Chrome 渲染流水线演化的未来
  9. 走进英特尔中国研究院探索创新日:发布最新科研成果与创新策略
  10. 想提升微服务容错性?试试这5种模式