python格式化字符串Type Error: Format Requires Mapping 的問題


最近幾天 頻繁看到有這種寫法

BASIC_FORMAT = "%(levelname)s:%(name)s:%(message)s"

 

第一次看到的pythoner看到可能會有點懵逼。因為我們見得最多的應該是這樣的字符串格式化

'%s sdjiaosdoijasoid %s' % (a, b)

 

而上面的寫法很容易讓我們聯想到python的 format格式化寫法。但是事實是並不是這樣的 我們可能會做這樣的嘗試

levelname = 'haha'
name = 'xixi'
message = 'kexuan'

BASIC_FORMAT = "%(levelname)s:%(name)s:%(message)s"
print BASIC_FORMAT % (levelname, name, message)

 

但是得到的結果卻是

print BASIC_FORMAT % (levelname, name, message)
TypeError: format requires a mapping

 

看來並不是這么寫的。經過好一陣google 才發現原來這種寫法接受的對象是字典,所以正確的寫法是

levelname = 'haha'
name = 'xixi'
message = 'kexuan'

BASIC_FORMAT = "%(levelname)s:%(name)s:%(message)s"
print BASIC_FORMAT % {'levelname': levelname, 'name': name, 'message': message}

 

得到的結果

haha:xixi:kexuan

 

 

所以遇到這種寫法的時候,大家一定要特別注意呀。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM