
忽略 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 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 >>> 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 既然用大蛇,为什么不去找轮子 |