Python 2.6引入了该str.format()方法,其语法与现有%运算符略有不同.哪种情况更好,哪种情况更好?
以下使用每种方法并具有相同的结果,那么有什么区别?
#!/usr/bin/python
sub1 = "python string!"
sub2 = "an arg"
a = "i am a %s" % sub1
b = "i am a {0}".format(sub1)
c = "with %(kwarg)s!" % {'kwarg':sub2}
d = "with {kwarg}!".format(kwarg=sub2)
print a # "i am a python string!"
print b # "i am a python string!"
print c # "with an arg!"
print d # "with an arg!"
Run Code Online (Sandbox Code Playgroud)此外,何时在Python中发生字符串格式化?例如,如果我的日志记录级别设置为HIGH,我仍然会执行以下%操作吗?如果是这样,有没有办法避免这种情况?
log.debug("some debug info: %s" % some_info)
Run Code Online (Sandbox Code Playgroud)我需要将(0,128,64)转换为这样的#008040.我不知道该怎么称呼后者,使搜索变得困难.
在这里解决Jeremy的反应:将十六进制颜色转换为RGB,反之亦然我能够获得一个python程序来转换预设颜色十六进制代码(例如#B4FBB8),但是从最终用户的角度来看,我们不能要求人们编辑代码并从那里运行.如何提示用户输入十六进制值然后从那里吐出RGB值?
这是我到目前为止的代码:
def hex_to_rgb(value):
value = value.lstrip('#')
lv = len(value)
return tuple(int(value[i:i + lv // 3], 16) for i in range(0, lv, lv // 3))
def rgb_to_hex(rgb):
return '#%02x%02x%02x' % rgb
hex_to_rgb("#ffffff") # ==> (255, 255, 255)
hex_to_rgb("#ffffffffffff") # ==> (65535, 65535, 65535)
rgb_to_hex((255, 255, 255)) # ==> '#ffffff'
rgb_to_hex((65535, 65535, 65535)) # ==> '#ffffffffffff'
print('Please enter your colour hex')
hex == input("")
print('Calculating...')
print(hex_to_rgb(hex()))
Run Code Online (Sandbox Code Playgroud)
使用该线print(hex_to_rgb('#B4FBB8'))我能够让它吐出正确的RGB值,即(180,251,184)
它可能非常简单 - 我对Python仍然很粗糙.
我有这个清单:
a_list = [0x00, 0x00, 0x00, 0x00]
Run Code Online (Sandbox Code Playgroud)
当我打印它时,我得到:
print a_list
[0, 0, 0, 0]
Run Code Online (Sandbox Code Playgroud)
但我想:[0x0, 0x0, 0x0, 0x0]或者[0x00, 0x00, 0x00, 0x00],现在没关系.
我试图创建一个函数,如:
def hex_print(the_list):
string = '['
for element in the_list:
if(the_list.index(element) < len(the_list)):
print(str(the_list.index(element)))
string = string + hex(element) + ', '
else:
print(str(the_list.index(element)))
string = string + hex(element) + ']'
print string
Run Code Online (Sandbox Code Playgroud)
但每次打印的消息是:
[0x0, 0x0, 0x0, 0x0,
Run Code Online (Sandbox Code Playgroud)
我认为the_list.index(element)总是返回the_list中第一次出现的元素,而不是元素的实际位置.有没有办法让我得到元素的实际位置?