分析
数字中经常是3个数字一组,之后跟一个逗号,因此规律为:***,***,***
正则式[a-z]+,[a-z]?
import re
sen = "abc,123,456,789,mnp"
p = re.compile("d+,d+?")
for com in p.finditer(sen):
mm = com.group()
print "hi:", mm
print "sen_before:", sen
sen = sen.replace(mm, mm.replace(",", ""))
print "sen_back:", sen, 'n'
技巧
使用函数finditer(string[, pos[, endpos]]) | re.finditer(pattern, string[, flags]):
搜索string,返回一个顺序访问每一个匹配结果(Match对象)的迭代器。
sen = "abc,123,456,789,mnp"
while 1:
mm = re.search("d,d", sen)
if mm:
mm = mm.group()
sen = sen.replace(mm, mm.replace(",", ""))
print sen
else:
break
这样的程序针对具体问题,即数字3位一组,如果数字混杂与字母间,干掉数字间的逗号,即把“abc,123,4,789,mnp”转化为“abc,1234789,mnp”
更具体的是找正则式“数字,数字”找到后用去掉逗号的替换
sen = "abc,123,4,789,mnp"
while 1:
mm = re.search("d,d", sen)
if mm:
mm = mm.group()
sen = sen.replace(mm, mm.replace(",", ""))
print sen
else:
break
print sen
python正则匹配抓取豆瓣电影链接和评论代码分享
importurllib.requestimportreimporttimedefmovie(movieTag):tagUrl=urllib.request.urlopen(url)tagUrl_read=tagUrl.read().decode('utf-8')returntagUrl_readdefsubject(tagUrl_read):'''这里还存在问题:
win7安装python生成随机数代码分享
importrandomdefgenrand(small,big):returnsmall+(big-small)*random.random()defdisplay(small,big):returnr'请输入上下限(默认%.2f~%.2f):'%(small,big)big=100small=0whileTrue:try:s=input(display(smal
python调用cmd复制文件代码分享
importosdefload():filename=os.getcwd()+r'fromto.txt'ifos.path.isfile(filename):f=open(filename)try:lines=f.readlines()finally:f.close()returnlineselse:print('请创建fromto.txt.')input()exit()defdis