2011-03-18 22 views
0

地圖這是我的代碼:如何將字符串使用python

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

'a ='''ddwqqf {x}''' – JHSaunders 2011-03-18 10:37:23

+3

你想達到什麼目的?你的第二個例子很混亂。 – 2011-03-18 10:41:51

+0

我想將許多不同的變量映射成字典,並創建許多像這樣的字典。 – zjm1126 2011-03-18 11:04:24

回答

3

嘗試

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是您的字符串。

+0

請看看更新。 – zjm1126 2011-03-18 10:34:31

+0

您是否有其他方式來執行此操作,因爲字符串非常大,如果我將{{}}更改爲{{}},那對我來說是一項艱苦的工作。看看updated2。 – zjm1126 2011-03-18 11:08:33

相關問題