我就遇到了這個問題,因爲我試圖做同樣的事情 - 從蟒蛇> = 2.7蟒蛇> = 2.4工作str.format行爲。來自stringformat的FormattableString(https://github.com/florentx/stringformat)似乎是正確的,但它只有在我可以使它在文字上工作時纔有用。
儘管大多數意見,猴子修補內建和文字在python確實出現使用代碼我發現這裏是可能的:https://gist.github.com/295200。這似乎是Armin Ronacher寫的 - 當然不是我自己寫的。
最後,我能夠做這樣的事在Python 2.6,即使它通常只在2.7工作。
dx = get_class_dict(str)
dx['format'] = lambda x,*args,**kargs: FormattableString(x).format(*args,**kargs)
print "We've monkey patched {}, {}".format('str', 'with multiple parameters')
以上鍊接中的示例顯示瞭如何添加新方法而不是替換現有方法。
這個小練習促使我到STR和unicode猴子補丁添加到的StringFormat封裝,所以現在你可以這樣做:
# should work on python down to 2.4
import stringformat
print "[{0:{width}.{precision}s}]".format('hello world', width=8, precision=5)
這可以從這裏克隆:「https://開頭的github .com/igg/stringformat「,直到/除非它被拉入」官方「字符串格式。哈。只有兩個超鏈接對我來說,所以沒有點擊你!
當然不是沒有黑客的實施,這當然不是你想要的。 (不應該`grep`或任何其他搜索工具顯示所有字符串文字和`str`調用?) – delnan 2011-02-13 12:51:03