1. 程式人生 > >Python----使用正則re查詢文字中特定中文字串,去除重複的資料,取有某個特定字串的前幾位與後幾位數據(適應web回包查詢)

Python----使用正則re查詢文字中特定中文字串,去除重複的資料,取有某個特定字串的前幾位與後幾位數據(適應web回包查詢)

Python----使用正則re查詢文字中特定中文字串

例子1:指令碼檔案

[email protected]:~/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  

執行情況
[email protected]:~/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指令碼

[email protected]:~/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
指令碼執行情況
[email protected]:~/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的內容”您的驗證碼是..........”,這個欄位後面單行所有內容

指令碼:

[email protected]:~/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
指令碼執行情況:
[email protected]:~/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程式碼:

[[email protected] 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、執行情況:

[[email protected] tmp]# python findbankid.py 
bankCode=ECITIC, charges=370.2, feeMethod=0, remark=12200, paymentVoucher=null, backupTime=0, countdownTime=0
bankCode=<null>,orderId=2068355,orderTime=Tue Jun 05 10:17:00 CST 2018,merchantId=258000****,remark=<null>,tr
.............................
.............................

例子5、取有某個特定字串的前幾位與後幾位數據

1、python指令碼程式碼:

[[email protected] 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
[[email protected] tmp]# 

2、執行情況

..........................................
.........................................
uency=0], com.*****.**[email protected][id=1000,bankCode=SZFS,bankAccount=0000000000000000****,rate=0.0,name=****電子結算中心,status=1,remark=<null>,de
uency=0], com.*****.**[email protected][id=1000,bankCode=SZFS,bankAccount=0000000000000000*****,rate=0.0,name=****電子結算中心,status=1,remark=<null>,de
requency=0], com.*****.**[email protected][id=2,bankCode=ABC,bankAccount=410341000400****,rate=0.0,name=**銀行,status=1,remark=<null>,defaultFlag=0,maxLimitAm
uency=0], com.******.**[email protected][id=2000,bankCode=SPDB,bankAccount=011200040004*****,rate=0.0,name=**銀企直連代付,status=1,remark=<null>,defaultFlag=0,maxLi
equency=0], com.******.**[email protected][id=30,bankCode=ABC,bankAccount=410341000400*****,rate=0.0,name=**銀行,status=1,remark=<null>,defaultFlag=0,maxLimitAm