0
Probenleitung von file1.txtPython nicht Looping Suche auf regexe
2016-04-30 02:03:55,417 INFO [http-nio-443-exec-51] xxxxxxxxxxxxxx (xxxxxxxxxxxxxx.java:1364) - TRX[160430120042]::paymentResult::xxxxxxxxxxxxx(Billing)Response::TRANSACTION[160450001042], REFERENCE_CODE[1461953034575], END_USER_ID[tel:+639422387059], OPERATION_RESULT[CHARGED] ERR[ERR_NONE], ERR_MSG[null], RAW_RESPONSE[{ "amountTransaction":{ "serverReferenceCode":"060601159083533", "serviceID":"OX036", "transactionOperationStatus":"Charged", "endUserId":"tel:+639422387059", "referenceCode":"30001-1461953034775", "paymentAmount":{ "totalAmountCharged":"130.00", "chargingInformation":{ "description":"Description of ChargeAmount Request", "currency":"USD", "amount":"130.00" } } } }]
ich einige Tage gerade erst begonnen Python vor und war auf der Suche rund um die Stackoverflow. Ich kann nicht scheinen jede Zeile aus der Datei, die nur die erste Zeile durchsucht.
import re
with open('file1.txt') as f:
my_text = f.read()
re1='((?:2|1)\\d{3}(?:-|\\/)(?:(?:0[1-9])|(?:1[0-2]))(?:-|\\/)(?:(?:0[1-9])|(?:[1-2][0-9])|(?:3[0-1]))(?:T|\\s)(?:(?:[0-1][0-9])|(?:2[0-3])):(?:[0-5][0-9]):(?:[0-5][0-9]))' # Time Stamp 1
re2='.*?' # Non-greedy match on filler
re3='\\[.*?\\]' # Uninteresting: sbraces
re4='.*?' # Non-greedy match on filler
re5='\\[.*?\\]' # Uninteresting: sbraces
re6='.*?' # Non-greedy match on filler
re7='(\\[.*?\\])' # Square Braces 1
re8='.*?' # Non-greedy match on filler
re9='".*?"' # Uninteresting: string
re10='.*?' # Non-greedy match on filler
re11='".*?"' # Uninteresting: string
re12='.*?' # Non-greedy match on filler
re13='(".*?")' # Double Quote String 1
re14='.*?' # Non-greedy match on filler
re15='".*?"' # Uninteresting: string
re16='.*?' # Non-greedy match on filler
re17='(".*?")' # Double Quote String 2
re18='.*?' # Non-greedy match on filler
re19='".*?"' # Uninteresting: string
re20='.*?' # Non-greedy match on filler
re21='(".*?")' # Double Quote String 3
re22='.*?' # Non-greedy match on filler
re23='".*?"' # Uninteresting: string
re24='.*?' # Non-greedy match on filler
re25='(".*?")' # Double Quote String 4
re26='.*?' # Non-greedy match on filler
re27='".*?"' # Uninteresting: string
re28='.*?' # Non-greedy match on filler
re29='(".*?")' # Double Quote String 5
re30='.*?' # Non-greedy match on filler
re31='".*?"' # Uninteresting: string
re32='.*?' # Non-greedy match on filler
re33='".*?"' # Uninteresting: string
re34='.*?' # Non-greedy match on filler
re35='(".*?")' # Double Quote String 6
rg = re.compile(re1+re2+re3+re4+re5+re6+re7+re8+re9+re10+re11+re12+re13+re14+re15+re16+re17+re18+re19+re20+re21+re22+re23+re24+re25+re26+re27+re28+re29+re30+re31+re32+re33+re34+re35,re.IGNORECASE|re.DOTALL)
m = rg.search(my_text)
if m:
timestamp1 = m.group(1)
sbraces1 = m.group(2)
string1 = m.group(3)
string2 = m.group(4)
string3 = m.group(5)
string4 = m.group(6)
string5 = m.group(7)
string6 = m.group(8)
data = timestamp1 + ',' + sbraces1.strip('[]') + ',' + string1.strip('"') + ',' + string2.strip(
'"') + ',' + string3.strip('"') + ',' + string4.replace('tel:+', '').strip('"') + ',' + string5.strip(
'"') + ',' + string6.strip('"')
print(data)
f.close()
Ausgang
2016-04-30 02:03:55,160430000042,060601159083533,OB056,Charged,639422387059,30001-1461953034575,130.00
Meine Hauptfrage ist, warum haben Sie so viele nicht-gierige Match-auf-Füllstoff-Wiederholungen? Es sieht wirklich chaotisch aus und ich glaube nicht, dass Sie Regex gut verstehen. Vielleicht wäre es ein guter Anfang, die Grundlagen von Regex zu lernen. –