파이썬에서 GSM 모뎀으로부터받은 메시지를 구문 분석하려고합니다.파이썬에서 GSM 모뎀이받은 메시지 매개 변수를 구문 분석
나는 구문 분석 할 메시지가 너무 많습니다. 몇 시간마다 새로운 메시지를받습니다.
다음은 직렬 개체를 목록 x에 사용하여 모뎀에서 데이터를 읽은 후받은 데이터의 예입니다.
AT+CMGL="ALL"
+CMGL: 1,"REC READ","+918884100421","","13/04/05,08:24:36+22"
here's message one
+CMGL: 2,"REC READ","+918884100421","","13/04/05,09:40:38+22"
here's message two
+CMGL: 3,"REC READ","+918884100421","","13/04/05,09:41:04+22"
here's message three
+CMGL: 4,"REC READ","+918884100421","","13/04/05,10:04:18+22"
here's message four
+CMGL: 5,"REC READ","+918884100421","","13/04/05,10:04:32+22"
here's message five
.
.
.
.
.
더 많은 메시지가 있습니다. 여기에 5 개를 나열했습니다.
내 주요 의도는 메시지의 내용을 추출하는 것입니다. 예를 들어, "여기에 메시지 하나"와 같은 메시지가 나타납니다.
다음 코드는 지금 사용하고 있습니다.
def reading():
print "Reading all the messages stored on SIM card"
phone.write(b'AT+CMGL="ALL"\r')
sleeps()
x=phone.read(10000)
sleeps()
print x
print "Now parsing the message!"
k="".join(x)
parse(k)
k=""
def parse(k):
m = re.search("\+CMGL: (\d+),""(.+)"",""(.+)"",(.*),""(.+)""\r\n(.+)\r\n",k)
print "6="
print m.group(6)
전화는 GSM 모뎀에서 읽는 데 사용하는 직렬 객체입니다. (6)이다
다음m.group이 첫 번째 메시지의 메시지 내용을 캡처 "여기에 메시지 하나"
가 어떻게이 모든 메시지뿐만 아니라 첫 번째의 내용과 일치 할 수 있습니다.멀티 라인 플래그 설정을 시도했지만 작동하지 않았습니다. re.search() 대신 re.findall()도 사용하지 않았습니다.
또한 re.search에 의해 반환 된 match 개체는 반복 할 수 없습니다.
도와주세요. 메시지가 줄 바꿈에 항상있는 경우
질문에 메시지를받는 Python 프로그램을 추가 할 것을 요청할 수 있습니까? – Abraham