0

我正在编写代码以使用 python 通过串行端口从连接到我的笔记本电脑的 GSM 调制解调器发送和接收消息。

在我的程序中,我创建了一个名为 phone 的串行对象。

我使用手机读取和写入列表 x,其中存储了我在执行期间获得的 AT 命令、响应和状态报告。

例如,考虑以下检查我的 GSM 调制解调器中 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 

还是我的方法完全错误?

请帮忙!

4

2 回答 2

1

您可以通过执行将列表转换为字符串

myRegexableString = "".join(x)
于 2013-03-29T06:46:31.563 回答
0

如果您想从“x”中提取数据,这应该可以。不需要正则表达式。

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)

希望这有帮助。

于 2013-03-29T06:50:21.633 回答