我试图解析部分SVG文件以获得HEX填充颜色(如#ceff80等)
当我使用Bash grep
命令执行此操作时:
grep -o -e "fill:#[a-f, 0-9]*;" Sample.svg
结果如下:
fill:#000000;
fill:#ff0000;
fill:#ff9955;
fill:#ff9955;
fill:#ffffff;
fill:#ff0000;
fill:#800080;
fill:#666666;
fill:#666666;
fill:#00ff00;
但是当我尝试使用Python的re
模块时,我得到了None
:
import re
color = re.match(r'fill:#[a-f, 0-9]*;', style)
这是在使用ElementTree
遍历XML结构的循环内调用的。 style
字符串包含如下值:
font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter5107)
我想提取填充:#xxxxxx;然后使用[6:-1]
范围表达式将其截断以进行进一步处理。
由于某种原因,它总是返回None
类型的对象。
我做错了什么?
答案 0 :(得分:1)
您应该使用re.search()
代替re.match()
。
re.match()
仅检查字符串是否与RegExp完全匹配,因此如果开头的任何内容都是意外的,那么它就会失败。