Как отобразить строку с помощью Python - PullRequest
0 голосов
/ 18 марта 2011

это мой код:

a= ''' ddwqqf{x}'''
def b():
    ...

c=b(a,{'x':'!!!!!'})
print c

я хочу получить ddwqqf!!!!!,

как создать функцию b,

спасибо

Последнее обновление:

но как это сделать:

a= ''' ddwqqf{x},{'a':'aaaa'}'''

c = a.format(x="!!!!!")

d= open('a.txt','a')
d.write(c)

это показывает ошибку:

Traceback (most recent call last):
  File "d.py", line 8, in <module>
    c = a.format(x="!!!!!")
KeyError: "'a'"

updated2:

это строка:

'''
{
    'skill': {x_1},
    'power': {x_2},
    'magic': {x_3},
    'level': {x_4},
    'weapon': {
        0 : {
            'item': {
                'weight': 40,
                'target': 1,
                'defence': 100,
                'name': u'\uff75\uff70\uff78\uff7f\uff70\uff84',
                'attack': 100,
                'type': 1
            },
        },
        1 : {
            'item': {
                'weight': 40,
                'target': 1,
                'defence': 100,
                'name': u'\uff75\uff70\uff78\uff7f\uff70\uff84',
                'attack': 100,
                'type': 1
            },
        },
        2 : {
            'item': {
                'weight': 40,
                'target': 1,
                'defence': 100,
                'name': u'\uff75\uff70\uff78\uff7f\uff70\uff84',
                'attack': 100,
                'type': 1
            },
        }
       ......
    }
}
'''

1 Ответ

3 голосов
/ 18 марта 2011

Попробуйте

def b(a, d):
    return a.format(**d)

Это работает в Python 2.6 или выше.Конечно, вам не нужно определять функцию для этого:

a = " ddwqqf{x}"
c = a.format(x="!!!!!")

будет достаточно.

Изменить относительно вашего обновления:

a = " ddwqqf{x},{{'a':'aaaa'}}"

, чтобы избежать замены второй пары скобок.

Другое правка : Я действительно не знаю, откуда взялась ваша строка и каков контекст всего этого.Одним из решений может быть

import re
d = {"x_1": "1", "x_2": "2", "x_3": "3", "x_4": "4"}
re.sub(r"\{([a-z_0-9]+)\}", lambda m: d[m.group(1)], s)

, где s - ваша строка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...