对存储在列表中的字符进行分组,以便正则表达式可用于解析列表的信息,以存储 Python 中 GSM 调制解调器接收的数据



我正在用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)

希望有帮助。

最新更新