2011-03-18 5 views
0

ceci est mon code:comment mapper la chaîne en utilisant python

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

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

je veux ddwqqf!!!!!,

donc comment créer la fonction b,

grâce

mise à jour:

mais comment faire cette chose:

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

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

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

il montre l'erreur:

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

updated2:

c'est la chaîne:

''' 
{ 
    '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 
      }, 
     } 
     ...... 
    } 
} 
''' 
+0

'a = '' 'ddwqqf {x}' '' – JHSaunders

+3

Qu'essayez-vous d'accomplir? Votre deuxième exemple est très déroutant. –

+0

Je veux mapper de nombreux Variable différents en dict, et créer beaucoup de dict comme ça. – zjm1126

Répondre

3

Essayez

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

Cela fonctionne dans Python 2.6 ou supérieur. Bien sûr, vous n'auriez pas besoin de définir une fonction pour cela:

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

sera suffisant.

Modifier concernant votre mise à jour:

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

pour éviter les substitutions pour la seconde paire d'accolades.

Autre modification: Je ne sais pas vraiment d'où vient votre chaîne et quel est le contexte de tout cela. Une solution peut être

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 est votre chaîne.

+0

s'il vous plaît regarder la mise à jour. – zjm1126

+0

avez-vous eu un autre moyen de le faire, parce que la chaîne est très grande, si je change {} en {{}}, c'est un travail difficile pour moi. regardez le updated2. – zjm1126

Questions connexes