[问题] python正规表示式如何做?

楼主: han999 (铠材校直定尺切断机)   2018-11-07 22:09:38
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的讯息?
想请问一下,我是少做了什么?
恳请指点<(_ _)>
作者: vi000246 (Vi)   2018-11-07 22:15:00
| 这个符号应该要escape 我猜啦空格改用\s看看
作者: djshen (djshen)   2018-11-07 22:15:00
你有看过文件?然后你应该print test_string看是什么
作者: edwar (海边的野孩子)   2018-11-07 22:34:00
大概是少看了re.findall的文件
作者: s860134 (s860134)   2018-11-07 22:38:00
资料一看就是 json ,为何不用 json.loads ?import json;_j = json.loads(tmp.content)print(_j[0]['DeviceInfo']['SWV']['_value'])re 的用法找一下吧 ,语法错误甚至不知道你要切啥...更正一下上面的 key ['InternetGatewayDevice']['DeviceI... 后略,资料隔是既然是 json 用 json.loads 就会很原味的转成 python 的内建类别了当然若是遇到一些空值或编码,要加点 flag 去调整
作者: dpes10087 (悠哉度日)   2018-11-08 09:04:00
'DeviceInfo | SWV | 0.02.01',把中间的空格删掉。这个网站https://regex101.com/ 或 Notepad++进行测试
作者: Kazimir (Kazimir)   2018-11-08 22:15:00
'find: tmp.content' ??? 所以这是一整个字串?
作者: supershi (我爱赵小平)   2018-11-09 06:54:00
test_string改成f'find: {tmp.content}'看看
作者: renshin (阿信)   2018-11-11 11:25:00
感觉起来test_string是一般字符而不是档案内容

Links booklink

Contact Us: admin [ a t ] ucptt.com