0
검색 대체 패턴 전후에 파일에 기록해야합니다. 아래 코드를 작성했습니다. 필자는 출력 파일에 함수를 써서 잘 동작했습니다. 그러나 나는 약 20 가지의 대체 패턴을 가지고 있으며 모든 대체 코드를 작성해야하기 때문에 코드를 작성하지 않는다고 느낍니다. 이 방법을 구현하는 데 다른 방법이 있는지 알려 주시기 바랍니다.람다를 사용한 검색 패턴 교체
import re
Report_file = open("report.txt", "w")
st = '''<TimeLog>
<InTime='10Azx'>1056789</InTime>
<OutTime='14crg'>1056867</OutTime>
<PsTime='32lxn'>1056935</PsTime>
<ClrTime='09zvf'>1057689</ClrTime>
</TimeLog>'''
def tcnv(str):
Report_file.write("Previous TS: " + str + "\n\n")
v1 = re.search(r"(?i)<clrtime='(\d+\w+)'>", str)
val1 = v1.group(1)
v2 = re.search(r"(?i)(<clrtime='(\d+\w+)'>(.*?)</clrtime>)", str)
val2 = v2.group(3)
soutval = "<Clzone><clnvl='" + val1 + "'>" + val2 + "</clnvl></Clzone>"
Report_file.write("New TS: " + soutval + "\n")
return soutval
st = re.sub(r"(?i)(<clrtime='(\d+\w+)'>(.*?)</clrtime>)", lambda m: tcnv(m.group(1)), st)
st = re.sub(r"(?i)<intime='(\d+\w+)'>(.*?)</intime>", "<Izone><Invl='\\1'>\\2</Invl></Izone>", st)
st = re.sub(r"(?i)<outtime='(\d+\w+)'>(.*?)</outtime>", "<Ozone><onvl='\\1'>\\2</onnvl></Ozone>", st)
st = re.sub(r"(?i)<pstime='(\d+\w+)'>(.*?)</pstime>", "<Pszone><psnvl='\\1'>\\2</psnvl
의견에 감사드립니다. 왜냐하면 나는 파이썬에 익숙하지 않기 때문에 그 방법으로 파일을 여는 것이다. ripl 함수에 대해 설명해 주시겠습니까? –
검색 대체 패턴 전후에 포함 된 보고서를 만들 수 없습니다. –
@ new2python''ripl()''은 매개 변수''ma''에서 MatchObject를 받기위한 함수입니다. 그것은 사전''d''를 사용합니다. 이 사전을 매개 변수 "d"에 대한 기본값으로 둡니다. 실제로 함수는''def ripl (ma, dico) :''에 의해 정의 될 수 있고''dico''는 함수 블록에서''d''를 대신 할 것입니다 :''dico [ma.group (1) ] [0]''와''dico [ma.group (1)] [1]''을 사용합니다. 함수 정의의 실행은 한 번만 실행되기 때문에 매개 변수의 기본값을 정의하는 것은 흥미 롭습니다 (정의에 따르면 함수를 설명하는 텍스트 블록을 이해해야합니다) – eyquem