如何用Python来sed对某行进行替换查询和替换一个文本字符串

python字符串字串查找 find和index方法 - 为程序员服务
为程序员服务
python字符串字串查找 find和index方法
python 字符串查找有4个方法,1 find,2 index方法,3 rfind方法,4 rindex方法。
1 find()方法:查找子字符串,若找到返回从0开始的下标值,若找不到返回-1
info = 'abca'
print info.find('a')##从下标0开始,查找在字符串里第一个出现的子串,返回结果:0
info = 'abca'
print info.find('a',1)##从下标1开始,查找在字符串里第一个出现的子串:返回结果3
info = 'abca'
print info.find('333')##返回-1,查找不到返回-1
2 index()方法:
python 的index方法是在字符串里查找子串第一次出现的位置,类似字符串的find方法,不过比find方法更好的是,如果查找不到子串,会抛出异常,而不是返回-1
info = 'abca'
print info.index('a')
print info.index('33')
rfind和rindex方法用法和上面一样,只是从字符串的末尾开始查找。
您可能的代码
相关聚客文章
荣誉:2088
相关专栏文章用Python处理文本中的某些多余字符
昨天就遇到一位朋友说他在豆丁网上下载的文档内容,每个标题和段落都多了一个‘遥’字,文档九十多M,手动一个个的删除这个字眼睛都花了,想了一下Python在处理文本上的便利性,便写了一个小脚本,程序很简单,使用了python的正则表达式re模块的sub方法,通过提前编译查找模式来提高替换速度,如果要替换文本比较大(几百M)可以自行设置buff区间以提高速度,程序还有不完善的地方就是如果要替换的字符出现频率比较大,而它的字符刚好被buff截断则无法通过正则表达式查询到,所以可能会有漏删除现象,重复运行几次就可以完全删除了。
请看程序:
#-*- coding:utf-8 -*-
class DelChars(object):
&&&&def __init__(self):
&&&&&&&&"""chars_todelete is the chars list to be deleted"""
&&&&&&&&if input_filepath and os.path.exists(input_filepath) and os.path.isfile(input_filepath):
&&&&&&&&&&&&self.__input_file = input_filepath
&&&&&&&&&&&&self.__output_file = None
&&&&&&&&else:
&&&&&&&&&&&&print('your give file not exist, pleases check')
&&&&&&&&&&&&return
&&&&&&&&if isinstance(chars_todelete, list) and len(chars_todelete)&0:
&&&&&&&&&&&&self.__chars_todelete = chars_todelete
&&&&&&&&&&&&self.__pattern = None
&&&&&&&&else:
&&&&&&&&&&&&print('please give at lest one chars.')
&&&&&&&&&&&&return
&&&&&&&&self.__buff = buff
&&&&&&&&self.__encode_chars=[]
&&&&&&&&self.__build_save_file()
&&&&&&&&self.__build_re_pattern()
&&&&&&&&self.__delete_chars()
&&&&def __build_save_file(self):
&&&&&&&&if self.__input_file:
&&&&&&&&&&&&base_dir=os.path.dirname(self.__input_file)
&&&&&&&&&&&&base_file_name=os.path.basename(self.__input_file)
&&&&&&&&&&&&self.__output_file = os.path.normpath(os.path.join(base_dir, 'rewrited'+base_file_name)
def __build_re_pattern(self):
&&&&&&&&for char in self.__chars_todelete:
&&&&&&&&&&&&encode_ch = char.encode('gbk')
&&&&&&&&&&&&self.__encode_chars.append(encode_ch)
&&&&&&&&pattern_string=("%s|"*len(self.__encode_chars))[0:-1]
&&&&&&&&self.__pattern = re.compile(pattern_string%tuple(self.__encode_chars))
&&&&&&&&pass
def __delete_chars(self):
&&&&&&&&if self.__pattern:
&&&&&&&&&&&&f_in = open(self.__input_file, 'r')
&&&&&&&&&&&&f_out = open(slef.__output_file,'w+)
&&&&&&&&&&&&buff = f_in.read(self.__buff)
&&&&&&&&while buff:
&&&&&&&&&&& buff = re.sub(self.__pattern,‘’, buff))
&&&&&&&&&&& f_out.write(buff)
&&&&&&&&&&& buff=f_in.read(self.__buff)
&&&&&&& f_in.close()
&&&&&&& f_out.close()
&&&&&&&&del self.__encode_chars[:]
&&&&&&&&print("remove chars over")
if __name__ == '__main__':
&&&&&&&&&DelChars("your_file_name",
[delete_cahrs])
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。python字符串替换方法和注意事项
方法有两种:
last_date = &1/2/3&&& 目标为&123&
之一:repalce
date =last_date.replace('/','')
p = re.compile(&/&)
date = p.sub('', last_date)
注意事项是:
一定不要转义,否则函数不会生效。
作者:etetet029python字符串截取与替换的多种方法
时间: 20:08:14来源:网络
导读:python字符串截取与替换的多种方法,以冒号分隔的字符串的截取方法,python字符串替换方法,用字符串本身的方法,或用正则替换字符串。
转自:/python/zifuchuan/9398.htm
python字符串截取与替换的多种方法
一,字符串的截取Python的字符串是有序集合,可以通过索引来提取想要获取的字符,把python的字符串作为字符串的列表好理解些。
python的字串列表有2种取值顺序:第一种是从左到右索引默认0开始的,最大范围是字符串长度少1:&
复制代码代码示例:
s = 'ilovepython's[0]的结果是i&
第二种是从右到左索引默认-1开始的,最大范围是字符串开头:&
复制代码代码示例:
s = 'ilovepython's[-1]的结果是n&
上面这个是取得一个字符,如果要取得一断字符的话,可以用到python 字符串截取功能,比如:&
复制代码代码示例:
s = 'ilovepython's[1:5]的结果是love&
当使用以冒号分隔的字符串,python返回一个新的对象,结果包含了以这对偏移标识的连续的内容,左边的开始是包含了下边界,比如上面的结果包含了s[1]的值l,而取到的最大范围不包括上边界,就是s[5]的值p。&多举几个例子:s[:3]结果是'ilo',省掉:左边的话,默然左边开始的索引值是0,其实这个表达式和s[0:3]的意思是一样的。
s[:-1]结果是:'ilovepytho' 就是左边开始的索引值是0,最大范围到字符串里的最后一个字符但是不包括最后一个字符。&s[:]结果是:'ilovepython' 获取了从偏移0到末尾之间的元素,这是python 字符串拷贝。
二,python字符串替换python 字符串替换方法。
二种方法进行python字符串替换:1、用字符串本身的方法replace替换字符串。2、用正则来替换字符串。
复制代码代码示例:
a = 'hello word'&
把a字符串里的word替换为python。
1、用字符串本身的replace方法&
复制代码代码示例:
a.replace('word','python')&
输出:hello python
2、用正则表达式替换字符串&
复制代码代码示例:
import restrinfo = re.compile('word')b = strinfo.sub('python',a)print b&
输出:hello python
阅读(...) 评论()新手园地& & & 硬件问题Linux系统管理Linux网络问题Linux环境编程Linux桌面系统国产LinuxBSD& & & BSD文档中心AIX& & & 新手入门& & & AIX文档中心& & & 资源下载& & & Power高级应用& & & IBM存储AS400Solaris& & & Solaris文档中心HP-UX& & & HP文档中心SCO UNIX& & & SCO文档中心互操作专区IRIXTru64 UNIXMac OS X门户网站运维集群和高可用服务器应用监控和防护虚拟化技术架构设计行业应用和管理服务器及硬件技术& & & 服务器资源下载云计算& & & 云计算文档中心& & & 云计算业界& & & 云计算资源下载存储备份& & & 存储文档中心& & & 存储业界& & & 存储资源下载& & & Symantec技术交流区安全技术网络技术& & & 网络技术文档中心C/C++& & & GUI编程& & & Functional编程内核源码& & & 内核问题移动开发& & & 移动开发技术资料ShellPerlJava& & & Java文档中心PHP& & & php文档中心Python& & & Python文档中心RubyCPU与编译器嵌入式开发驱动开发Web开发VoIP开发技术MySQL& & & MySQL文档中心SybaseOraclePostgreSQLDB2Informix数据仓库与数据挖掘NoSQL技术IT业界新闻与评论IT职业生涯& & & 猎头招聘IT图书与评论& & & CU技术图书大系& & & Linux书友会二手交易下载共享Linux文档专区IT培训与认证& & & 培训交流& & & 认证培训清茶斋投资理财运动地带快乐数码摄影& & & 摄影器材& & & 摄影比赛专区IT爱车族旅游天下站务交流版主会议室博客SNS站务交流区CU活动专区& & & Power活动专区& & & 拍卖交流区频道交流区
白手起家, 积分 179, 距离下一级还需 21 积分
论坛徽章:0
如果把'\t' '\n'替换为空格,可以这样写:
str=str.replace(&\t&,& &)
str=str.replace(&\n&,& &)
复制代码
如果要把很多的字符都替换成空格,那么要写很多的replace语句
有没有一个语句实现把多个字符都替换为空格?谢谢
&&nbsp|&&nbsp&&nbsp|&&nbsp&&nbsp|&&nbsp&&nbsp|&&nbsp
白手起家, 积分 13, 距离下一级还需 187 积分
论坛徽章:0
试试,re.sub
白手起家, 积分 31, 距离下一级还需 169 积分
论坛徽章:0
str = 'sdfsdf\nsdfsdfd\t\tsdfsdfdsf\n'
#print str.replace('\n','A').replace('\t','B')
print re.sub('\s','',str)
白手起家, 积分 41, 距离下一级还需 159 积分
论坛徽章:0
不用这么复杂吧
看来同志们都没有看《Divde Into Python》
这样就可以了,如:
&&& s = &sdf ds& & & &&&t& &\nabc& &d&
&&& ' '.join(s.split())
'sdf ds t abc d'
家境小康, 积分 1083, 距离下一级还需 917 积分
论坛徽章:0
for i in 'abcde' :
& & s.replace(i, ' ')
北京盛拓优讯信息技术有限公司. 版权所有 京ICP备号 北京市公安局海淀分局网监中心备案编号:22
广播电视节目制作经营许可证(京) 字第1234号
中国互联网协会会员&&联系我们:
感谢所有关心和支持过ChinaUnix的朋友们
转载本站内容请注明原作者名及出处

我要回帖

更多关于 修改样式不进行热替换 的文章

 

随机推荐