【python cookbook】【字符串与文本】5.查找和替换文本

问题:对字符串中的文本做查找和替换

解决方案:

1、对于简单模式:str.replace(old, new[, max])

2、复杂模式:使用re模块中的re.sub(匹配的模式, newstring, oldstring[,替换个数])函数

3、re.subn()可以获得替换的总次数

# example.py
#
# Examples of simple regular expression substitution

import re

#simple sample
text1=‘yeah,but no,but yeah,but no,but yeah,but no,but yeah‘
print (text1.replace(‘yeah‘,‘yeh‘))
print (text1.replace(‘no‘,‘yes‘,2))
print (‘---------------------------‘)
# Some sample text
text = ‘Today is 11/27/2012. PyCon starts 3/13/2013.‘
datepat = re.compile(r‘(\d+)/(\d+)/(\d+)‘)
# (a) Simple substitution \3-表示匹配的模式中第3个模式组
print(datepat.sub(r‘\3-\1-\2‘, text))  #等价于print (re.sub(r‘(\d+)/(\d+)/(\d+)‘,r‘\3-\1-\2‘, text))
print (‘*****************************‘)
# (b) Replacement function  替换回调函数
from calendar import month_abbr
def change_date(m):
    mon_name = month_abbr[int(m.group(1))]
    return ‘{} {} {}‘.format(m.group(2), mon_name, m.group(3))

print(datepat.sub(change_date, text))
print (re.sub(r‘(\d+)/(\d+)/(\d+)‘,change_date, text))
print (‘++++++++++++++++++++++++++++++++‘)
# 通过re.subn()获取替换的总次数
newtext,n=datepat.subn(r‘\3-\1-\2‘, text) print (newtext) print (n)
>>> ================================ RESTART ================================
>>>
yeh,but no,but yeh,but no,but yeh,but no,but yeh
yeah,but yes,but yeah,but yes,but yeah,but no,but yeah
---------------------------
Today is 2012-11-27. PyCon starts 2013-3-13.
*****************************
Today is 27 Nov 2012. PyCon starts 13 Mar 2013.
Today is 27 Nov 2012. PyCon starts 13 Mar 2013.
++++++++++++++++++++++++++++++++
Today is 2012-11-27. PyCon starts 2013-3-13.
2
>>> 
时间: 2024-12-08 14:35:06

【python cookbook】【字符串与文本】5.查找和替换文本的相关文章

【python cookbook】【字符串与文本】6.以不区分大小写的方式对文本做查找和替换

问题:以不区分大小写的方式对文本做查找和替换 解决方法:使用re模块,并对各种操作都添加上re.IGNORECASE标记 text='UPPER PYTHON,lower python,Mixed Python' print (re.findall('python',text,re.IGNORECASE)) print (re.sub('python','snake',text,flags=re.IGNORECASE)) >>> =============================

Python实用技法第24篇:正则:查找和替换文本

1.需求 我们想对字符串中的文本做查找和替换. 2.解决方案 对于简单的文本模式,使用str.replace()即可. 例如: text='mark ,帅哥,18,183 帅,mark' print(text.replace('18','19')) print(text) Python资源分享qun 784758214 ,内有安装包,PDF,学习视频,这里是Python学习者的聚集地,零基础,进阶,都欢迎 运行结果: mark ,帅哥,19,193 帅,mark mark ,帅哥,18,183

Python中如何查找和替换文本?

在Python开发中查找和替换非常简单,如果当前对象是一个字符串 str 时,你可以使用该类型提供的 find() 或者 index() 方法查找指定的字符,如果能找到则会返回字符第一次出现的索引,如果不存在则返回-1. >>> s = 'Cat and Dog'>>> s.find('Dog')8>>> s.index('Dog')8>>> s.find('Duck') -1 如果要替换目标字符串,用 replace() 方法就好了

在vs2013中使用正则表达式查找和替换文本内容

我们有的时候需要替换代码中的某些内容,因为替换的内容"不一致",所以不能简单的使用一个replace搞定.这里有几个解决方法,核心思想是一致的,程序员不要做体力活,能交给程序或脚本的就交给程序或脚本来完成. 我先提一个替换的需求,这个在实际工作中是很常见的.比如 把所有的toke[TOKEN_ENUM_ATTACK], token[TOKEN_ENUM_MAGIC]这样的字符串替换为TOKEN_ENUM_ATTACK, TOKEN_ENUM_MAGIC,也就是说去掉token[],直接

Mac上通过Linux命令行批量查找和替换文本

一般在本地电脑上批量替换文本有许多工具可以做到,比如Emeditor,sublime text ,但在linux和mac上相关的编辑器有这个功能的不多,另外大多服务器上都是无图形界面的,因此收集了几条针对linux命令行备忘,实现批量替换文本内容的命令: 批量查找某个目下文件的包含的内容 grep -rn "要找查找的文本" ./ 通过sed批量查找并替换文件内容. sed -i "s/要找查找的文本/替换后的文本/g"grep -rl "要找查找的文本&

python cookbook第三版学习笔记四:文本以及字符串令牌解析

文本处理: 假设你存在一个目录,下面存在各种形式的文件,有txt,csv等等.如果你只想找到其中一种或多种格式的文件并打开该如何办呢.首先肯定是要找到满足条件的文件,然后进行路径合并在一一打开. path=r'D:\test_source' filenames=os.listdir(path) print filenames ret=[name for name in filenames if name.endswith('.txt')] print ret direct_path=[os.pa

python cookbook 字符串和文本

使用多个界定符分隔字符串 import re line = 'asdf fjdk; afed, fjek,asdf, foo' print(re.split(r'[;,\s]\s*', line)) print(re.split(r'(;|,|\s)\s*', line)) #加括号表示捕获分组,这样匹配的结果也显示在列表中 匹配开头或结尾 url = 'http://www.python.org' print(url.startswith(('http', 'https', 'ftp')))

Python字符串的方法,查找和替换

Python数字 整型         int              如:1       4       8 浮点型     float          如:1.0   3.6   78.9 长整型     long           如:1L     37565846588L(在一个整数后面加上L就是长整型,理论上长整型的长度为 2147483647) 注意:在Python对MySQL操作时,导出的整形数可能就是长整型. 命令(IDLE(Python GUI)) print 打印出指定

ios 字符串的插入删除查找与替换,删除空格

NSString *str1 = @"This is a example.";  NSMutableString *mstr = [[NSMutableString alloc] init]; //创建可变字符串  NSRange substr; //子字符串的范围mstr = [NSMutableString stringWithString:str1];  //插入字符  [mstr insertString:@"very easy " atIndex:10];