Python----使用正则re查找文本中特定中文字符串
例子1:脚本文件
root@kali:~/python/dinpay# cat t.py
#coding:utf-8
import re
source = "s2f程序员杂志一2d3程序员杂志二2d3程序员杂志三2d3程序员杂志四2d3"
temp = source.decode('utf8')
findword=u"(杂志+)" #需要查找的特定中文字符串
pattern = re.compile(findword)
results = pattern.findall(temp)
for result in results :
print result
root@kali:~/python/dinpay# python t.py
杂志
杂志
杂志
杂志
参考:
http://blog.csdn.net/freedomqx/article/details/6237654
例子2、查找的目标文件logyzm.txt的内容”您的验证码是xxxxxx”,就是查找这个文档中的所有短信验证码时多少。
:
2018-01-09 10:54:27,543 [DubboServerHandler-192.168.49.162:30594-thread-98] [INFO]-[com.*****.***.*******.sms.channel.DH3TSMSChannel sendSMS 30]-大汉三通 提交单条普通短信响应结果:{"msgid":"8cad20d5438a40dfb5bd3811f41dcd9e","result":"0","desc":"提交成功","failPhones":""}
2018-01-09 11:12:37,926 [DubboServerHandler-192.168.49.162:30594-thread-98] [INFO]-[com.*****.***.*******.sms.ShortMessageSender sendShortMessage 80]-Number: 13612946093 Content: 尊敬的用户,您好!您正在进行登录操作,需要您进行身 份校验,校验码981737(请勿向任何人提供您收到的校验码)。如非本人操作,请致电4008822311
..........................
...............................
...........................
......................
.........................
........................
2018-01-09 22:04:31,625 [DubboServerHandler-192.168.49.162:30594-thread-98] [INFO]-[com.******.***.commons.sms.channel.DH3TSMSChannel sendSMS 30]-大汉三通 提交单条普通短信响应结果:{"msgid":"a1eeba0d886241e6938ce3ab03b010bb","result":"0","desc":"提交成功","failPhones":""}
2018-01-09 22:09:53,658 [DubboServerHandler-192.168.49.162:30594-thread-98] [INFO]-[com.******.***.tss.message.SMSSender sendSMS 16]-send sms,number:13590374324, content:尊敬的用户您好!欢迎使用**服务,您的验证码是725022,请在页面填写验证码完成验证,如非本人操作,可忽略本条短信。
2018-01-09 22:09:53,659 [DubboServerHandler-192.168.49.162:30594-thread-98] [INFO]-[com.******.***.commons.sms.ShortMessageSender sendShortMessage 80]-Number: 13590374324 Content: 尊敬的用户您好!欢迎使用**服务,您的验证码是725022,请在页面填写验证码完成验证,如非本人操作,可忽略本条短信。
python脚本
root@kali:~/python/dinpay# cat findlogyzm.py
#!/usr/nbin/python
# --*-- coding:utf-8 --*--
import re
logyzm = open("/root/python/dinpay/logyzm.txt").read()
#print logyzm
temp = logyzm.decode("utf8")
findword = u"(您的验证码是+\d\d\d\d\d\d)"#匹配后面6个数字
pattern = re.compile(findword)
results = pattern.findall(temp)
for result in results:
print result
脚本运行情况
root@kali:~/python/dinpay# python findlogyzm.py
您的验证码是506558
您的验证码是506558
您的验证码是506558
您的验证码是563370
您的验证码是563370
您的验证码是563370
您的验证码是770674
您的验证码是770674
您的验证码是770674
您的验证码是571424
您的验证码是571424
您的验证码是571424
您的验证码是788867
您的验证码是788867
您的验证码是788867
您的验证码是739203
您的验证码是739203
您的验证码是739203
您的验证码是872226
您的验证码是872226
您的验证码是872226
您的验证码是130449
您的验证码是130449
您的验证码是130449
您的验证码是947610
您的验证码是947610
您的验证码是947610
您的验证码是216868
您的验证码是216868
您的验证码是216868
您的验证码是416465
您的验证码是416465
您的验证码是416465
您的验证码是037734
您的验证码是037734
您的验证码是037734
您的验证码是621276
您的验证码是621276
您的验证码是621276
您的验证码是285804
您的验证码是285804
您的验证码是285804
您的验证码是864063
您的验证码是864063
您的验证码是864063
您的验证码是396197
您的验证码是396197
您的验证码是396197
您的验证码是725022
您的验证码是725022
您的验证码是725022
您的验证码是341013
您的验证码是341013
您的验证码是341013
例子3:
查找的目标文件logyzm.txt的内容”
您的验证码是..........”,这个字段后面单行所有内容
脚本:
root@kali:~/python/dinpay# cat findlogyzm.py
#!/usr/nbin/python
# --*-- coding:utf-8 --*--
import re
logyzm = open("/root/python/dinpay/logyzm.txt").read()
#print logyzm
temp = logyzm.decode("utf8")
findword = u"(您的验证码是.+)"# .+表示匹配至少一个任意字符
#findword = u"(.+您的验证码是.+)"#表示取有“您的验证码是”字符串的这行所有数据
pattern = re.compile(findword)
results = pattern.findall(temp)
for result in results:
print result
脚本运行情况:
root@kali:~/python/dinpay# python findlogyzm.py
您的验证码是506558,请在页面填写验证码完成验证,如非本人操作,可忽略本条短信。
您的验证码是506558,请在页面填写验证码完成验证,如非本人操作,可忽略本条短信。
您的验证码是506558,请在页面填写验证码完成验证,如非本人操作,可忽略本条短信。","sign":"【**】","subcode":"15861","sendtime":""}
您的验证码是563370,请在页面填写验证码完成验证,如非本人操作,可忽略本条短信。
您的验证码是563370,请在页面填写验证码完成验证,如非本人操作,可忽略本条短信。
您的验证码是563370,请在页面填写验证码完成验证,如非本人操作,可忽略本条短信。","sign":"【**】","subcode":"15861","sendtime":""}
您的验证码是770674,请在页面填写验证码完成验证,如非本人操作,可忽略本条短信。
您的验证码是770674,请在页面填写验证码完成验证,如非本人操作,可忽略本条短信。
您的验证码是770674,请在页面填写验证码完成验证,如非本人操作,可忽略本条短信。","sign":"【**】","subcode":"15861","sendtime":""}
您的验证码是571424,请在页面填写验证码完成验证,如非本人操作,可忽略本条短信。
您的验证码是571424,请在页面填写验证码完成验证,如非本人操作,可忽略本条短信。
您的验证码是571424,请在页面填写验证码完成验证,如非本人操作,可忽略本条短信。","sign":"【**】","subcode":"15861","sendtime":""}。
例子4、去除重复的数据,显示为一个列表
1、python代码:
[root@cdn tmp]# cat findbankid.py
#!/usr/nbin/python
# --*-- coding:utf-8 --*--
import re
lastlist = []
logyzm = open("/usr/local/tomcat_corp/logs/catalina.out").read()
#print logyzm
temp = logyzm.decode("utf8")
findword = r'bankCode=.{100}'#取该字符串以及其后面100个字符数据
pattern = re.compile(findword)
results = re.findall(pattern,temp)
for result in results:
#print result
lastlist.append(result)
list = set(lastlist)#对重复数据进行去重处理
for l in list:
print l
2、运行情况:
[root@cdn tmp]# python findbankid.py
bankCode=ECITIC, charges=370.2, feeMethod=0, remark=12200, paymentVoucher=null, backupTime=0, countdownTime=0
bankCode=,orderId=2068355,orderTime=Tue Jun 05 10:17:00 CST 2018,merchantId=258000****,remark=,tr
.............................
.............................
例子5、取有某个特定字符串的前几位与后几位数据
1、python脚本代码:
[root@cdn tmp]# cat findbankid_back_before.py
#!/usr/nbin/python
# --*-- coding:utf-8 --*--
import re
lastlist = []
logyzm = open("/usr/local/tomcat_corp/logs/catalina.out").read()
#print logyzm
temp = logyzm.decode("utf8")
findword = r'.{75}bankCode=.{100}'#取该字符串的前面75个字符数据以及其后面100个字符数据
pattern = re.compile(findword)
results = re.findall(pattern,temp)
for result in results:
#print result
lastlist.append(result)
list = set(lastlist)#对重复数据进行去重处理
for l in list:
print l
[root@cdn tmp]#
2、运行情况
..........................................
.........................................
uency=0], com.*****.**.domain.system.config.BankGateway@74e0e49f[id=1000,bankCode=SZFS,bankAccount=0000000000000000****,rate=0.0,name=****电子结算中心,status=1,remark=,de
uency=0], com.*****.**.domain.system.config.BankGateway@54b8d335[id=1000,bankCode=SZFS,bankAccount=0000000000000000*****,rate=0.0,name=****电子结算中心,status=1,remark=,de
requency=0], com.*****.**.domain.system.config.BankGateway@4709eb46[id=2,bankCode=ABC,bankAccount=410341000400****,rate=0.0,name=**银行,status=1,remark=,defaultFlag=0,maxLimitAm
uency=0], com.******.**.domain.system.config.BankGateway@5e7e6ceb[id=2000,bankCode=SPDB,bankAccount=011200040004*****,rate=0.0,name=**银企直连代付,status=1,remark=,defaultFlag=0,maxLi
equency=0], com.******.**.domain.system.config.BankGateway@61d0d735[id=30,bankCode=ABC,bankAccount=410341000400*****,rate=0.0,name=**银行,status=1,remark=,defaultFlag=0,maxLimitAm