我有一個Perl(.pm
)文件,我一直試圖進入JSON表示,以便我可以在其中搜索關鍵字。使用Python將Perl模塊轉換爲JSON
我的腳本的目錄是/Devices/bin/script.py
。 .pm
文件所在的目錄在一個級別上,因此/Devices/Devices.PM
。 Devices.PM
是包含結構化的字典和列表,像這樣的數據只是一個靜態文件:
mylist = (
blah => {
other =9,
houses => 1,
etc => [
{ etc => '5',
ppl => '3,
things => "etc",
animals => [ 'blah-228', 'blah-229' ]
},
{ etc => '9',
ppl => '5',
things => "22",
animals => [ 'blah-2', 'blah-5' ]
},
],
partner => 'ets',
location => 'wherever',
},
blah => {
ppl => 6,
place => 101,
things => 'etc',
animals => 'whatever',
},
我:
os.chdir("..")
with open('Devices.pm', 'r') as f:
json_obj = json.dumps(f)
print json_obj
,但我不斷收到TypeError: <open file 'SwitchConfig.pm', mode 'w' at 0x10c1f69c0> is not JSON serializable
。我已經嘗試了這幾種方式,沒有運氣,包括json.dump(s)
。我不斷收到不同的錯誤。我是否正確理解我的.pm
文件結構以將其轉換爲JSON表示?
似乎與此問題有關[Python沒有JSON對象可以被解碼](http://stackoverflow.com/questions/20128772/python-no-json-object-could-be-decoded),也許嘗試複製文件內容到像[jsonlist.com](http://jsonlint.com)的驗證器,並根據需要進行調整 – davedwards
在python 3中,您需要讀取文件'f.read()' – meyer9
看起來你會需要一個(微小的)Perl腳本將其導出爲實際的JSON。至於'.pm'文件本身(你展示的),那是不合法的Perl。 mylist前面需要一個'%'作爲一個有效的哈希(Python中的一個字典),或者一個'@'作爲一個數組(這裏會引起誤解)。這裏顯示的還有其他語法錯誤,我猜拼錯了。你能澄清一下,文件是如何看起來的? – zdim