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

时间:2017-11-01 15:04:43

标签: python python-2.7 replace

我怎样才能有更好的方法? josn:

myInput="My name is {{ name }}!"

我想要结果。

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'}'

我试过了。

home = '1p: 2, 2p: 0, rs: 2, 3p: 0, penalty: 0, fe: 2, ord: 2, ot:0'

4 个答案:

答案 0 :(得分:2)

import json
d = json.loads(home)
print(','.join('%s: %s' % tup for tup in d.items()))

答案 1 :(得分:0)

您可以使用ast.literal_eval()

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'

答案 2 :(得分:-1)

所以,一些字符串魔术的时间:

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, penalty: 0, fe: 2, ord: 2, ot: 0'

但实质上,这是一个单线解决方法,用于完成与替换相同的操作。它将字符串home转换为字典以在理解中使用。最后,字典被字符串替换。我没有看到用于去除json中雕刻的一块结构的用途,除非是用于印刷目的,这可以在字典理解中更有效地完成。

答案 3 :(得分:-1)

你可以使用正则表达式

home = sport.get("home")
home = re.sub(r'[{}\'u]+','', home)