我想知道替换()Python的更好方法

我想知道替换()Python的更好方法,python,python-2.7,replace,Python,Python 2.7,Replace,我怎样才能找到更好的方法? 乔森: 我想要结果 home = '1p: 2, 2p: 0, rs: 2, 3p: 0, penalty: 0, fe: 2, ord: 2, ot:0' 我试过这个 home= sport.get("home") home= str(home).replace("{","") home= str(home).replace("}","") home= str(home).replace("u'","") home= str(home).replace("'","

我怎样才能找到更好的方法? 乔森:

我想要结果

home = '1p: 2, 2p: 0, rs: 2, 3p: 0, penalty: 0, fe: 2, ord: 2, ot:0'
我试过这个

home= sport.get("home")
home= str(home).replace("{","")
home= str(home).replace("}","")
home= str(home).replace("u'","")
home= str(home).replace("'","")

那么,是时候来点弦乐魔术了:

home = "{u'1p': u'2', u'2p': u'0', u'rs': u'2', u'3p': u'0', u'penalty': u'0', u'fe': u'2', u'ord': u'2', u'ot':u'0'}"
import ast
home = ''.join(['{}: {}, '.format(k,v) for k,v in ast.literal_eval(home).items()]).strip(', ')
这将使您获得
home='1p:2,2p:0,rs:2,3p:0,惩罚:0,fe:2,ord:2,ot:0'

但从本质上讲,这是一个单行的解决方法,用于做与替换完全相同的事情。它将字符串
home
转换为字典以用于理解。最后,字典被字符串替换。我看不出删除json中嵌入的一段结构有什么用,除非是为了打印,这可以在dict理解中更有效地完成。

您可以使用regex

import json
d = json.loads(home)
print(','.join('%s: %s' % tup for tup in d.items()))
home = sport.get("home")
home = re.sub(r'[{}\'u]+','', home)
你可以用

输出:

>>> res
'1p: 2, 2p: 0, rs: 2, 3p: 0, penalty: 0, fe: 2, ord: 2, ot: 0'

但是您的
home
变量最初将抛出
SyntaxError:invalid syntax
。更新您的问题为什么不使用
json.loads(…)
解析它并通过迭代生成相同的结果?请发布一些工作代码。您从何处获取数据--一个有效的JSON文件?
eval(…)
在IMO中是不允许的。好吧,好吧,如果您不信任获取JSON的来源,您确实不应该使用
eval
,因为这可能会很快导致安全问题。@criptааажзаааааааааажзааааа
res = ''.join('{}: {}, '.format(k, v) for k, v in ast.literal_eval(home).items())[:-2]
>>> res
'1p: 2, 2p: 0, rs: 2, 3p: 0, penalty: 0, fe: 2, ord: 2, ot: 0'