作者han999 (卖鸡排的少年)
看板Python
标题[问题] python正规表示式如何做?
时间Wed Nov 7 22:09:38 2018
In [1] tmp.content
Out [1] b'[\n{"_id":"DUT2236-bkcin128-11032016","InternetGatewayDevice":
{"DeviceInfo":{"SWV":{"_object":false,"_value":"0.02.01",
"_type":"xsd:string","_timestamp":"2018-11-07T13:47:17.373Z","_writable":false}}}}\n]'
现在我的程式码如下:
import re
In [1] test_string = 'find: tmp.content'
pattern = 'DeviceInfo | SWV | 0.02.01'
ans=re.findall(pattern,test_string)
print(ans)
Out [1] []
出现的结果为空?
为何在Out [1] 没有出现DeviceInfo.SoftwareVersion 0.02.01的讯息?
想请问一下,我是少做了甚麽?
恳请指点<(_ _)>
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 36.224.53.188
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1541599781.A.983.html
※ 编辑: han999 (36.224.53.188), 11/07/2018 22:13:02
1F:推 vi000246: | 这个符号应该要escape 我猜啦 11/07 22:15
2F:→ vi000246: 空格改用\s看看 11/07 22:15
3F:→ djshen: 你有看过文件? 11/07 22:15
4F:→ djshen: 然後你应该print test_string看是什麽 11/07 22:16
5F:→ edwar: 大概是少看了re.findall的文件 11/07 22:34
6F:→ s860134: 资料一看就是 json ,为何不用 json.loads ? 11/07 22:38
7F:→ s860134: import json;_j = json.loads(tmp.content) 11/07 22:50
8F:→ s860134: print(_j[0]['DeviceInfo']['SWV']['_value']) 11/07 22:52
9F:→ s860134: re 的用法找一下吧 ,语法错误甚至不知道你要切啥... 11/07 22:53
10F:→ s860134: 更正一下上面的 key ['InternetGatewayDevice']['DeviceI 11/07 22:58
11F:→ s860134: ... 後略,资料隔是既然是 json 用 json.loads 就会 11/07 22:58
12F:→ s860134: 很原味的转成 python 的内建类别了 11/07 22:58
13F:→ s860134: 当然若是遇到一些空值或编码,要加点 flag 去调整 11/07 22:59
14F:→ dpes10087: 'DeviceInfo | SWV | 0.02.01',把中间的空格删掉。 11/08 09:04
16F:→ Kazimir: 'find: tmp.content' ??? 所以这是一整个字串? 11/08 22:15
17F:→ supershi: test_string改成f'find: {tmp.content}'看看 11/09 06:54
18F:→ renshin: 感觉起来test_string是一般字元而不是档案内容 11/11 11:25