在python中使用正则表达式查找可嵌套字符串组


Posted in Python onOctober 24, 2017

在网上看到一个小需求,需要用正则表达式来处理。原需求如下:

找出文本中包含”因为……所以”的句子,并以两个词为中心对齐输出前后3个字,中间全输出,如果“因为”和“所以”中间还存在“因为”“所以”,也要找出来,另算一行,输出格式为:

行号 前面3个字 *因为* 全部 &所以& 后面3个字(标点符号算一个字)

2 还不是 *因为* 这里好, &所以& 没有人

实现方法如下:

#encoding:utf-8
import os
import re
def getPairStriList(filename):
  pairStrList = []
  textFile = open(filename, 'r')
  pattern = re.compile(u'.{3}\u56e0\u4e3a.*\u6240\u4ee5.{3}') #u'\u56e0\u4e3a和u'\u6240\u4ee5'分别为“因为”和“所以”的utf8码
  for line in textFile:
    utfLine = line.decode('utf8')
    result = pattern.search(utfLine)
    while result:
      resultStr = result.group()
      pairStrList.append(resultStr)
      result = pattern.search(resultStr,2,len(resultStr)-2)
  #对每个字符串进行格式转换和拼接  
  for i in range(len(pairStrList)):
    pairStrList[i] = pairStrList[i][:3] + pairStrList[i][3:5].replace(u'\u56e0\u4e3a',u' *\u56e0\u4e3a* ',1) + pairStrList[i][5:]
    pairStrList[i] = pairStrList[i][:len(pairStrList[i])-5] + pairStrList[i][len(pairStrList[i])-5:].replace(u'\u6240\u4ee5',u' &\u6240\u4ee5& ',1)
    pairStrList[i] = str(i+1) + ' ' + pairStrList[i]
  return pairStrList
  if __name__ == '__main__':
  pairStrList = getPairStriList('test.txt')
  for str in pairStrList:
    print str

PS:下面看下python里使用正则表达式的组嵌套

由于组本身是一个完整的正则表达式,所以可以将组嵌套在其他组中,以构建更复杂的表达式。下面的例子,就是进行组嵌套的例子:

#python 3.6 
#蔡军生  
#http://blog.csdn.net/caimouse/article/details/51749579 
# 
import re 
def test_patterns(text, patterns): 
  """Given source text and a list of patterns, look for 
  matches for each pattern within the text and print 
  them to stdout. 
  """ 
  # Look for each pattern in the text and print the results 
  for pattern, desc in patterns: 
    print('{!r} ({})\n'.format(pattern, desc)) 
    print(' {!r}'.format(text)) 
    for match in re.finditer(pattern, text): 
      s = match.start() 
      e = match.end() 
      prefix = ' ' * (s) 
      print( 
        ' {}{!r}{} '.format(prefix, 
                   text[s:e], 
                   ' ' * (len(text) - e)), 
        end=' ', 
      ) 
      print(match.groups()) 
      if match.groupdict(): 
        print('{}{}'.format( 
          ' ' * (len(text) - s), 
          match.groupdict()), 
        ) 
    print() 
  return

例子:

#python 3.6 
#蔡军生  
#http://blog.csdn.net/caimouse/article/details/51749579 
# 
from re_test_patterns_groups import test_patterns 
test_patterns( 
  'abbaabbba', 
  [(r'a((a*)(b*))', 'a followed by 0-n a and 0-n b')], 
)

结果输出如下:

'a((a*)(b*))' (a followed by 0-n a and 0-n b)
 'abbaabbba'
 'abb'    ('bb', '', 'bb')
   'aabbb'  ('abbb', 'a', 'bbb')
     'a' ('', '', '')

总结

以上所述是小编给大家介绍的在python中使用正则表达式查找可嵌套字符串组,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Python 相关文章推荐
python实现中文输出的两种方法
May 09 Python
Python 两个列表的差集、并集和交集实现代码
Sep 21 Python
轻量级的Web框架Flask 中模块化应用的实现
Sep 11 Python
Python爬豆瓣电影实例
Feb 23 Python
Django添加favicon.ico图标的示例代码
Aug 07 Python
详解Python中pandas的安装操作说明(傻瓜版)
Apr 08 Python
python写日志文件操作类与应用示例
Jul 01 Python
Python求两点之间的直线距离(2种实现方法)
Jul 07 Python
Django 对IP访问频率进行限制的例子
Aug 30 Python
Python爬取豆瓣视频信息代码实例
Nov 16 Python
Python如何转换字符串大小写
Jun 04 Python
Python实现Excel自动分组合并单元格
Feb 22 Python
python爬虫之BeautifulSoup 使用select方法详解
Oct 23 #Python
浅谈python中copy和deepcopy中的区别
Oct 23 #Python
python的构建工具setup.py的方法使用示例
Oct 23 #Python
python使用pyqt写带界面工具的示例代码
Oct 23 #Python
基于Django的python验证码(实例讲解)
Oct 23 #Python
itchat接口使用示例
Oct 23 #Python
python实现微信接口(itchat)详细介绍
Oct 23 #Python
You might like
php重定向的三种方法分享
2012/02/22 PHP
phpphp图片采集后按原路径保存图片示例
2014/02/18 PHP
2014年最新推荐的10款 PHP 开发框架
2014/08/01 PHP
PHP制作图形验证码代码分享
2014/10/23 PHP
jQuery向下滚动即时加载内容实现的瀑布流效果
2016/01/07 PHP
mac系统下为 php 添加 pcntl 扩展
2016/08/28 PHP
Js如何判断客户端是PC还是手持设备简单分析
2012/11/22 Javascript
jquery插件EasyUI中form表单提交实例分享
2016/01/11 Javascript
JavaScript代码因逗号不规范导致IE不兼容的问题
2016/02/25 Javascript
使用jQuery.Qrcode插件在客户端动态生成二维码并添加自定义Logo
2016/09/01 Javascript
实例解析angularjs的filter过滤器
2016/12/14 Javascript
JS中如何实现Laravel的route函数详解
2017/02/12 Javascript
angularJs的ng-class切换class
2017/06/23 Javascript
vue2.0.js的多级联动选择器实现方法
2018/02/09 Javascript
jquery实现搜索框功能实例详解
2018/07/23 jQuery
JS返回页面时自动回滚到历史浏览位置
2018/09/26 Javascript
Three.js实现3D机房效果
2018/12/30 Javascript
jQuery实现简单聊天室
2020/02/08 jQuery
[50:22]完美盛典-2018年度红毯走秀
2018/12/16 DOTA
[05:11]TI9战队采访——VIRTUSPRO
2019/08/22 DOTA
Python实时获取cmd的输出
2015/12/13 Python
Python不使用int()函数把字符串转换为数字的方法
2018/07/09 Python
Django项目中使用JWT的实现代码
2019/11/04 Python
基于python及pytorch中乘法的使用详解
2019/12/27 Python
tensorflow 分类损失函数使用小记
2020/02/18 Python
利用CSS3实现文本框的清除按钮相关的一些效果
2015/06/23 HTML / CSS
用HTML5实现网站在windows8中贴靠的方法
2013/04/21 HTML / CSS
洲际酒店集团英国官网:IHG英国
2019/07/10 全球购物
小学数学教学反思
2014/02/02 职场文书
大学生就业自我推荐信
2014/05/10 职场文书
电子商务系毕业生自荐信
2014/05/29 职场文书
优秀班主任材料
2014/12/16 职场文书
关于应聘教师的自荐信
2016/01/28 职场文书
Python实现随机生成迷宫并自动寻路
2021/06/13 Python
教你使用VS Code的MySQL扩展管理数据库的方法
2022/01/22 MySQL
移除Selenium中window.navigator.webdriver值
2022/06/10 Python