首页 > 编程知识 正文

python sub函数,python3正则表达式

时间:2023-05-04 02:21:19 阅读:112608 作者:4142

这两天写爬虫程序,涉及英语文本处理,需要规范英语标点符号的写法。 通常,必须确保句点“.”后面只有一个空格,但也有例外,例如“i.e .”、“e.g .”和“P.S .”。 由于无法预测大小写,所以在正则表达式中使用了“标志位”flags,但对其无效。

一开始,我的函数写得如下:

1defpunctuate(s ) :

2 #----其余代码暂定省略

3s=re.sub('e.g.',' e.g.',s,re.I ) )。

4返回s

代码的本意是,本来好好的“e.g .”,在被函数前半部分断开的代码错误地变更为“e.g .”之后,需要修复以删除英语句号“.”之后的空格。 但是,这个re.sub )代码主要有两个问题。

“e. g .”前后不一定是空格,这样写的话,遇到“e. g .”或“(e. g. xxx )”时会跳过。

的句点“.”不会被转义

标志re.I无效

前两个问题很容易解决。 改善代码如下。

1defpunctuate(s ) :

2 #----其余代码暂定省略

3s=re.sub (() a-za-z (e ).) ) ) a-za-z ) )、) (G1 ) G2 )、s,re.I ) ) ) ) )

4返回s

规则在“e. g .”之前或之后必须有“非英文”字符(包括空格),如果“e .”和“g .”之间有空格,请删除中间的空格,并保留前后的“非英文”。 g1表示找到的第一个括号中的文本,g2表示第二个括号,但标志位re.I的问题尚未解决。

后来写了《详细了解python--python中的re.sub》一文,我才恍然大悟。 re.sub ) )函数有五个参数,我传递了四个参数。 最后一个被认为是第四个参数而不是第五个。 多么低级的错误啊!

re.sub(pattern,repl,string,count=0,flags=0) ) ) )。

我传递的第四个参数re.I被视为count。 因此,正确的姿势是注明“flags=re.I”。

标点符号的整个正则化函数还包括以下附加替换:

1defpunctuate(s ) :

2s=re.sub () ([, (.) ) ) )、(g1 )、s ) #后加空格

3s=在re.sub (() )“ ()”、“g1 )、s”)之前加上空格

4 s=在re.sub (() )“ ()”、“g1 )和s”之后删除空格

5s=re.sub () ([, .” () )、(g1 )和s ) #之前删除空格

6s=re.sub () ) ([, . () ) )、(g1 )、s ) #关闭引号到空间

7s=re.sub () (, (.) ) )、() ) ) )、g1 )、s ) #封闭括号留出空格

8s=re.sub(((d ).) (d )、(G1.) G2 )、s ) )将小数点以下留空

9 s=re.sub ('、'、'、s ) #多空间修改单空间

输入10 #拉丁缩写,在点编号后加上空格

11s=re.sub () (((a-za-z ) e ).) ) ) a-za-z ) )、(((G1 ) G2 )、s,flags=re.I ) ) ) )

12s=re.sub (() a-za-z (I ).) ) ) a-za-z ) )、(G1(G2 )、s,flags=re.I () ) ) )

13s=re.sub () ((a-za-z ) q ).() ) ) a-za-z ) )、((G1 ) G2 )、s,flags=re.I () ) ) ) )

14s=re.sub (() a-za-z () v ).) ) ) a-za-z ) )、) (G1(G2 )、s,flags=re.I () ) ) )

15s=re.sub () ((a-za-z ) n ).) ) ) a-za-z ) )、((G1 ) G2 )、s,flags=re.I ) ) ) )

16s=re.sub () (() a-za-z (p ).) ) ) a-za-z ) )、(() G1 )、s,flags=re.I () ) ) ) 652

17s=re.sub (()、)、)、)、)、)、)、)、)、s ) )。

18返回s

多么痛苦的觉悟啊!

python学习道路lpar; 每日

4note)(函数,形参实参位置参数匿名参数,匿名函数,高阶函数,镶嵌函数)

1.函数 2种编程方法 关键词面向对象:华山派 --->> 类----->class面向过程:少林派 -->> 过程--->def 函数式编程:逍遥派 --> ...

python中,print函数的sep和end参数

print函数是我们经常使用的,但是它的sep和end参数或许对很多python使用者相对陌生,他们可以让我们的打印更具有个性化. 先来看下官方解释, sep:分割值与值,默认是一个空格 end:附件 ...

简介Python正则表达式

一.概念 简单来说正则表达式是由一些普通字符(例如,a 到 z 之间的字母)和一些元字符组成,用来匹配和过滤一些字符串的一种逻辑公式. 二.正则表达式的一些基本规则 1.一些常用的元字符   ^  : ...

python正则表达式模块re:正则表达式常用字符、常用可选标志位、group与groups、match、search、sub、split,findall、compile、特殊字符转义

本文内容: 正则表达式常用字符. 常用可选标志位. group与groups. match. search. sub. split findall. compile 特殊字符转义 一些现实例子 首发时 ...

python五十六课——正则表达式(常用函数之match)

函数:match(regex,string,[flags=0])参数:regex:就是正则表达式(定义了一套验证规则)string:需要被验证的字符串数据flags:模式/标志位,默认情况下(不定义) ...

$python正则表达式系列(2)——re模块常用函数

本文主要介绍正则re模块的常用函数. 1. 编译正则 import re p = re.compile(r'ab*') print '[Output]' print type(p) print p p ...

[ Python - 12 ] 线程的信号量、标志位及队列

线程的信号量 线程的信号量是同时允许一定数量的线程更改数据,主要作用在于限制线程的并发. #!_*_coding:utf-8_*_ # Author: hkey import threading, t ...

关于Python正则表达式findall函数问题详解

关于Python正则表达式 findall函数问题详解 在写正则表达式的时候总会遇到不少的问题, 特别是在表达式有多个元组的时候.下面看下re模块下的findall()函数和多个表达式元组相遇的时候会 ...

Python 正则表达式之 sub 和 subn函数的使用

re.sub() 函数的功能 re是reguler expressioin的缩写,表示正则表达式 sub 是 substitute 的缩写,表示替换: re.sub是个正则表达式方面的函数,用来实现通 ...

随机推荐

ASP.NET MVC5+EF6+EasyUI 后台管理系统(65)-MVC WebApi 用户验证 (1)

系列目录 前言: WebAPI主要开放数据给手机APP,其他需要得知数据的系统,或者软件应用,所以移动端与系统的数据源往往是相通的. Web 用户的身份验证,及页面操作权限验证是B/S系统的基础功能, ...

记录在linux下的wine生活

记录在linux下的windows生活 本篇内容涉及QQ.微信.Office的安装配置 QQ: 到deepin下载轻聊版. 如果安装了crossover,那么将其中opt/cxoffice/suppo ...

java的poi技术读取和导入Excel

项目结构: http://www.cnblogs.com/hongten/gallery/image/111987.html  用到的Excel文件: http://www.cnblogs.com/h ...

Android 学习笔记

1.sleep(),wait(),notify(),notifyAll() sleep()是线程类的静态方法,阻塞线程一定时间后再次使线程处于可以被调度运行的状态wait(),notify(),not ...

虚拟机下玩DXF

DXF检测虚拟机好象已经很长时间了,记得当时也是在网上找的教程,今天无聊又检测了一下,发现目前依然有效.用记事本打开 虚拟机启动文件 xxxx.vmx 在最后添加如下两行代码monitor_contr ...

hihocoder-1391&&北京网赛09 Countries(优先队列)

题目链接: Countries 时间限制:1000ms 单点时限:1000ms 内存限制:256MB 描述 There are two antagonistic countries, country ...

java语言写文件内容

import java.io.File;import java.io.FileWriter;import java.io.IOException; public static void main(St ...

tachyon 集群安装

tachyon的集群安装和单机安装差别不大 http://www.cnblogs.com/admln/p/tachyon-local-install.html 不同的地方 1.修改slaves时填入所 ...

css3动画 9步

...

北漂的IT人

北京的互联网人,是工作日完全没有个人生活的一类人,也是整个北漂大队伍中,下班时间最晚的那一波人,如果赶上周末还要加班,那毫不夸张地说,你的整个人生都在互联网上奋斗着. 虽说十点上班让多少行内外的人羡慕 ...

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。