2010-10-22 55 views
0

我將顏色值轉換爲字符串值,但是當我得到0時,字符串太短,我必須在它後面手動添加「00」。如何將顏色轉換爲具有相同大小的字符串?

在Python中解決這個問題最優雅的方式是什麼?

print "#" + str(self.R) + str(self.G) + str(self.B) 

if self.R is 0 then then get a short short string。

+0

你的問題有點不清楚。你能給出R G和B的一些示例值以及你想要這些值的輸出值嗎? – 2010-10-22 17:28:53

回答

4

使用格式字符串:

"#%02X%02X%02X" % (self.r, self.g, self.b)

會給你你可能想要的東西。如果您確實希望像您的示例中那樣使用小數點後的值,請改用"%03d"

2
print "#" + str(self.R).rjust(2,"0") + str(self.G).rjust(2,"0") + 
    str(self.B).rjust(2,"0") 

會正常工作。它會變成000101

4

假設你正在使用Python 2.6或更新版本,您可以使用str.format

print "#{0:02}{1:02}{2:02}".format(self.R, self.G, self.B) 

如果你想十六進制(可能是你),然後添加一個X:

print "#{0:02X}{1:02X}{2:02X}".format(self.R, self.G, self.B) 
+1

我收到以下錯誤:print「#{0:02} {1:02} {2:02}」。格式(self.R,self.G,self.B) ValueError:'='alignment not allowed在字符串格式說明符中 – aneuryzm 2010-10-22 18:39:09

3

Format也可以解決合格屬性:

print('#{s.R:02x}{s.G:02x}{s.B:02x}'.format(s=self)) 
相關問題