[英]Importing string as an ordered dictionary
我有一個沒有擴展名的文件,這樣的行(忽略行之間的間距,但每行是一個單獨的行):
OrderedDict([('key1', u'value1'), ('key2', 'value2')])
OrderedDict([('key1', u'value1'), ('key2', 'value2')])
OrderedDict([('key1', u'value1'), ('key2', 'value2')])
當我將它導入Python
snap_fh = open("C:\Users\.......")
for row in snap_fh:
print(type(row))
行是"strings"
,我無法將其解析為OrderedDictionary
"OrderedDict([('key1', u'value1'), ('key2', 'value2'))])\n"
如何將其作為OrderedDict
導入
ast.literal_eval(row)
不起作用!
您應該使用正則表達式來進行更安全的評估:
import re
import ast
from collections import OrderedDict
def read(f):
for s in f:
m = re.match(r'^OrderedDict\((.+)\)$', s)
if m:
yield OrderedDict(ast.literal_eval(m.group(1)))
...
for d in read(snap_fh):
print type(d)
使用eval似乎很好用
s = "OrderedDict([('key1', u'value1'), ('key2', 'value2')])"
a = eval(s, {'OrderedDict': OrderedDict})
print (a)
只有在您信任輸入源時才使用它 - 因為eval 非常危險
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.