我正在用python编写代码,从一个GSM调制解调器通过串口连接到我的笔记本电脑上发送和接收消息。
在我的程序中,我创建了一个名为phone的串行对象。
使用手机,我读取并写入一个列表x,该列表x存储了我在执行期间获得的AT命令,响应和状态报告。
例如,查看我的GSM modem中Sim卡的默认运营商
AT+COPS? #AT command
+COPS: 0,0,"VOD" #Response
OK #Status
现在我需要解析我在x中收到的信息。
我试图使用正则表达式来解析存储在x中的字符串。然而,问题是它将每个字符存储为列表中的单独元素。所以本质上没有弦。我如何将列表中存在的字符分组为字符串,以便我可以应用正则表达式来解析我的数据并理解发生了什么。
对于上面的相同命令,数据按照如下方式存储在x中:0 A
1 T
2 +
3 C
4 O
5 P
6 S
7 ?
8
9
10
11 +
12 C
13 O
14 P
15 S
16 :
17
18 0
19 ,
20 0
21 ,
22 "
23 V
24 O
25 D
26 "
27
28
29
30
31 O
32 K
33
34
还是我的方法完全错了?请帮忙!
您可以通过
将列表转换为字符串myRegexableString = "".join(x)
如果您想从'x'中提取数据,这应该可以工作。不需要regexp.
def read_message(x):
message_list = []
lines = x.split('n')
for line in lines:
index_past_number = 0
for i, char in enumerate(line):
if char.isdigit():
index_past_number += 1
line = line[index_past_number:] #add one to ignore the space
line = line.strip() #strip the newline
message_list.append(line)
return ''.join(message_list)
希望有帮助。