如何解析这个字符串?

2024-04-19 08:00:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个类似下面的字符串:

>>> string = """00 1f 00@ 00c 00e 00N 00> 00E 00O 00F 002 00& 00* 00/
 00) 00 1f 00 1c 00  00  00 17 00\r 00 08 00 03 00 f8 ff ea ff e1 ff e1 ff 
e0 ff da ff d2 ff cc ff c9 ff c5 ff c3 ff c3 ff c1 ff ba ff b3 ff b1 ff b2 
ff b3 ff b3 ff b6 ff ba ff b7 ff ab ff 9c ff 93 ff 93 ff 9c ff a5 ff aa ff 
aa ff a3 ff 9a ff 92 ff 95 ff a3 ff b2 ff b9 ff bd ff cb ff df ff e8 ff dd 
ff ca ff c8 ff d9 ff eb ff f1 ff ee ff f0 ff fe ff 10 00 1d 00 1f 00 18 00 
0f 00 0e 00 17 00" 00\' 00% 00\' 001 00= 00D 00G 00I 00M 00O 00N 00M 00M 00O 
00N 00K 00F 00C 00F 00M 00M 00@ 00. 00$ 00& 00* 00& 00 1d 00 17 00 17 00 17 
00 13 00 0f 00 13 00 1f 00* 00/ 00/ 00/ 00/ 00/ 00- 00\' 00 1f 00 18 00 13 
00 10 00 0c 00 08 00 03 00 00 00 fd ff f8 ff f3 ff f1 ff ee ff e8 ff e1 ff 
e1 ff e9 ff f0 ff f0 ff e9 ff e4 ff e1 ff dd ff da ff d8 ff d9 ff d7 ff d2 
ff cc ff c9 ff ca ff ca ff c9 ff c9 ff cd ff d1 ff d3 ff d1 ff d0 ff d1 ff
 d5 ff d9 ff dd ff e1 ff e6 ff e9 ff e9 ff e9 ff ec ff f1 ff f5 ff f8 ff fc 
ff 01 00 03 00 00 00 fb ff f9 ff fc ff 00 00 01 00 01 00 00 00 ff ff ff ff 
01 00 01 00 ff ff fb ff f9 ff fb ff ff ff 01 00 01 00 00 00 ff ff fe ff 00 
00 0b 00 17 00 1c 00 18 00 11 00 0f 00 11 00 10 00 0c 00 08 00 07 00 08 00\t 
00 08 00 04 00 00 00 fc ff f8 ff f7 ff f8 ff f9 ff"""

如你所见,它几乎由两个字母组组成。但很少有超过或少于两个字母的组。我想写一个程序给我那些组或那些字母。例如,我想给我@ c e N > o F 2 & * /作为第一行。 我想知道我该怎么做?你知道吗

我已经尝试了以下程序:

for word in string:
    if (len(word) !=2):
        print(word[2:], end =' ')

但似乎对我来说不太好!你知道吗


Tags: fbddcaf1b3d1fcff
3条回答

试试这个

 >>> s = """00 1f 00@ 00c 00e 00N 00> 00E 00O 00F 002 00& 00* 00/
 00) 00 1f 00 1c 00  00  00 17 00\r 00 08 00 03 00 f8 ff ea ff e1 ff e1 ff 
e0 ff da ff d2 ff cc ff c9 ff c5 ff c3 ff c3 ff c1 ff ba ff b3 ff b1 ff b2 
ff b3 ff b3 ff b6 ff ba ff b7 ff ab ff 9c ff 93 ff 93 ff 9c ff a5 ff aa ff 
aa ff a3 ff 9a ff 92 ff 95 ff a3 ff b2 ff b9 ff bd ff cb ff df ff e8 ff dd 
ff ca ff c8 ff d9 ff eb ff f1 ff ee ff f0 ff fe ff 10 00 1d 00 1f 00 18 00 
0f 00 0e 00 17 00" 00\' 00% 00\' 001 00= 00D 00G 00I 00M 00O 00N 00M 00M 00O 
00N 00K 00F 00C 00F 00M 00M 00@ 00. 00$ 00& 00* 00& 00 1d 00 17 00 17 00 17 
00 13 00 0f 00 13 00 1f 00* 00/ 00/ 00/ 00/ 00/ 00- 00\' 00 1f 00 18 00 13 
00 10 00 0c 00 08 00 03 00 00 00 fd ff f8 ff f3 ff f1 ff ee ff e8 ff e1 ff 
e1 ff e9 ff f0 ff f0 ff e9 ff e4 ff e1 ff dd ff da ff d8 ff d9 ff d7 ff d2 
ff cc ff c9 ff ca ff ca ff c9 ff c9 ff cd ff d1 ff d3 ff d1 ff d0 ff d1 ff
 d5 ff d9 ff dd ff e1 ff e6 ff e9 ff e9 ff e9 ff ec ff f1 ff f5 ff f8 ff fc 
ff 01 00 03 00 00 00 fb ff f9 ff fc ff 00 00 01 00 01 00 00 00 ff ff ff ff 
01 00 01 00 ff ff fb ff f9 ff fb ff ff ff 01 00 01 00 00 00 ff ff fe ff 00 
00 0b 00 17 00 1c 00 18 00 11 00 0f 00 11 00 10 00 0c 00 08 00 07 00 08 00\t 
00 08 00 04 00 00 00 fc ff f8 ff f7 ff f8 ff f9 ff"""

>>> output=[]  #List to add output

>>> for single_word in s.split():
    if (len(single_word) > 2):
        output.append(single_word[2:])


>>> print (list(set(output))) #Removes the duplicates
['"', '%', '$', "'", '&', ')', '*', '-', '/', '.', '1', '2', '=', '>', '@', 'C', 'E', 'D', 'G', 'F', 'I', 'K', 'M', 'O', 'N', 'c', 'e']


>>> " ".join (list(set(output)))
'" % $ \' & ) * - / . 1 2 = > @ C E D G F I K M O N c e'
In [6]: result = []

In [7]: for i in input_str.split(" "):
   ...:     if len(i)>2:
   ...:         result.append(i[2:])
   ...:         
In [15]: " ".join(result)
Out[15]: '@ c e N > E O F 2 & * /\n ) \r 0 f a f f " \' % \' 1 = D G I M O N M M O 0N K F C F M M @ . $ & * & 0 * / / / / / - \' 0 1 f \n f 1 0 \t 0'
#!/usr/bin/env python3
# coding: utf-8

s = """00 1f 00@ 00c 00e 00N 00> 00E 00O 00F 002 00& 00* 00/
 00) 00 1f 00 1c 00  00  00 17 00\r 00 08 00 03 00 f8 ff ea ff e1 ff e1 ff 
e0 ff da ff d2 ff cc ff c9 ff c5 ff c3 ff c3 ff c1 ff ba ff b3 ff b1 ff b2 
ff b3 ff b3 ff b6 ff ba ff b7 ff ab ff 9c ff 93 ff 93 ff 9c ff a5 ff aa ff 
aa ff a3 ff 9a ff 92 ff 95 ff a3 ff b2 ff b9 ff bd ff cb ff df ff e8 ff dd 
ff ca ff c8 ff d9 ff eb ff f1 ff ee ff f0 ff fe ff 10 00 1d 00 1f 00 18 00 
0f 00 0e 00 17 00" 00\' 00% 00\' 001 00= 00D 00G 00I 00M 00O 00N 00M 00M 00O 
00N 00K 00F 00C 00F 00M 00M 00@ 00. 00$ 00& 00* 00& 00 1d 00 17 00 17 00 17 
00 13 00 0f 00 13 00 1f 00* 00/ 00/ 00/ 00/ 00/ 00- 00\' 00 1f 00 18 00 13 
00 10 00 0c 00 08 00 03 00 00 00 fd ff f8 ff f3 ff f1 ff ee ff e8 ff e1 ff 
e1 ff e9 ff f0 ff f0 ff e9 ff e4 ff e1 ff dd ff da ff d8 ff d9 ff d7 ff d2 
ff cc ff c9 ff ca ff ca ff c9 ff c9 ff cd ff d1 ff d3 ff d1 ff d0 ff d1 ff
 d5 ff d9 ff dd ff e1 ff e6 ff e9 ff e9 ff e9 ff ec ff f1 ff f5 ff f8 ff fc 
ff 01 00 03 00 00 00 fb ff f9 ff fc ff 00 00 01 00 01 00 00 00 ff ff ff ff 
01 00 01 00 ff ff fb ff f9 ff fb ff ff ff 01 00 01 00 00 00 ff ff fe ff 00 
00 0b 00 17 00 1c 00 18 00 11 00 0f 00 11 00 10 00 0c 00 08 00 07 00 08 00\t 
00 08 00 04 00 00 00 fc ff f8 ff f7 ff f8 ff f9 ff"""


for grp in s.split():
    if len(grp) != 2:
        print(grp[2:])

更新的版本可额外查找短于两个字符的组:

found_because_longer_than_two_chars = list()
found_because_shorter_than_two_chars = list()

for grp in s.split():
    if len(grp) > 2:
        found_because_longer_than_two_chars.append(grp[2:])
        print(grp[2:])
    elif len(grp) < 2:
        found_because_shorter_than_two_chars.append(grp)
        print(grp)

print(found_because_longer_than_two_chars)
print(found_because_shorter_than_two_chars)

相关问题 更多 >