忽略 rgb 的大小写,并把 alpha 添加进去, 而且,后面可能有多个空格。
感谢了,搞了一下午没搞出来。
1
1iuh 2019-04-09 16:32:48 +08:00
先吧 RGB 替换成 rgb,再把 rgb 替换为 rgba,再把 235 替换为 235,0.5 就可以了。 一定要用 python 搞么?
|
2
jiutai21 2019-04-09 16:35:04 +08:00
用邪道方法 evel,定义 rgb(r,g,b) 函数,然后执行
|
3
1iuh 2019-04-09 16:35:12 +08:00
总之拆分一下再去实现就简单了。
|
4
jiutai21 2019-04-09 16:36:19 +08:00 1
def rgb(r,g,b):
return 'rgba({},{},{},0.5)'.format(r,g,b) src = 'rgb(54,162,235)' a = eval(src) print(a) |
6
xmoiduts 2019-04-09 16:38:07 +08:00 via Android
搭车求问,长度为( 4*led 数量)的字符串,每个 led 用 4 字节存信息( rgbw ),可否使用正则或其他方法变成( grbw )?由于单片机性能十分有限,希望找到比 py 更快的方法。
|
8
misaka19000 2019-04-09 16:42:03 +08:00
replace(')', ', 0.5)') 这样不就可以了吗,要什么正则
|
11
cissoid 2019-04-09 16:47:31 +08:00 1
>>> re.sub(r'^rgb\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\s*\)$', r'rgba(\1,\2,\3,0.5)', 'rgb( 11, 22 , 33 )')
'rgba(11,22,33,0.5)' 对 RGB 值的范围没做 0 - 255 的强校验. |
12
jiutai21 2019-04-09 16:53:11 +08:00
@coolair 难看点的实现,就是每次调用 evel 时,修改字符串 rgb(r,g,b),把最后的 ) 改为 ,alpha)
然后 rgb 函数改成 4 个参数 |
13
jiutai21 2019-04-09 17:02:20 +08:00
找到一个个人认为比较优雅的方法
def rgb(r, g, b): return 'rgba({},{},{},{})'.format(r, g, b, alpha) src = 'rgb(54,162,235)' di = locals() di['alpha']=0.5 a = eval(src, None,di) print(a) |
14
Mohanson 2019-04-09 17:04:21 +08:00 via Android
python PIL 模块的 Color 子模块有你想要的
|
15
Mohanson 2019-04-09 17:10:00 +08:00 via Android
名字错了,是 ImageColor.py 里
|
16
ETiV 2019-04-09 17:57:43 +08:00
思路是忽略大小写的匹配 rgb(括号里的全部内容)
替换为 rgba(括号里的全部内容, 0.5) echo 'Rgb(54, 162, 235)' | sed -E 's;rgb\((.*)\);rgba(\1, 0.5);gi' 不会 Python |
17
ETiV 2019-04-09 17:59:11 +08:00
sed -E 's;rgb\(([^)]+)\);rgba(\1, 0.5);gi'
rgb(排除掉)的全部内容) |
18
ysc3839 2019-04-09 18:18:26 +08:00 via Android
先把字符串转成小写,再把 ')' 替换成 ', 0.5)'。
|
20
ryan18 2019-04-09 18:19:44 +08:00 via Android
既然用大蛇,为什么不去找轮子
|