我试图在一个 css 文件中找到所有相对 url 并将它们替换为绝对 url。我知道如何获取绝对路径,但首先我需要在文件中找到 url() 的所有出现,然后获取相对路径并将其替换为绝对路径。到目前为止,这是我尝试过的。
鉴于我的 Css 是:
css= "background:url(/pub-assets/img/index/sec8-bg.png)
src:url('../fonts/fontawesome-webfont.eot?v=4.6.3')
background-image:url('../img/index/blok1-bg.jpg')"
我正在尝试这段代码:
start = "url("
end = ")"
print css[css.find(start)+len(start):css.rfind(end)]
但它不返回 url,而是遗憾地返回 css 代码。 谁能帮我这个。非常感谢任何建议
最佳答案
使用正则表达式,您可以轻松列出每个网址。像那样:
import re
css= "background:url(/pub-assets/img/index/sec8-bg.png) \n src:url('../fonts/fontawesome-webfont.eot?v=4.6.3') \n background-image:url('../img/index/blok1-bg.jpg')"
re.findall(r'url\((.*?)\)', css)
输出:
['/pub-assets/img/index/sec8-bg.png',
"'../fonts/fontawesome-webfont.eot?v=4.6.3'",
"'../img/index/blok1-bg.jpg'"]
如果你想要索引,你可以使用 findIter 而不是 findall https://docs.python.org/2/library/re.html#re.finditer :
[(m.start(0), m.end(0)) for m in re.finditer(r'url\((.*?)\)', css)]
输出
[(11, 49), (56, 103), (123, 155)]
关于Python循环遍历CSS文件中的所有url并替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49819328/