[問題] 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