Python循环遍历CSS文件中的所有url并替换

标签 python css string url substring

我试图在一个 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/

相关文章:

html - IE 中的错误图像定位

c++ - 以类似于初始化字符串文字的方式初始化 char 数组

python - 无法在 virtualenv 中使用 pip 安装软件包

python - 带有Dropbox API的AWS Chalice

javascript - 如何使我的绝对定位元素具有响应性?

html - 流畅的内联列表和行对齐

java - 在java中对字符串进行排序

正则表达式提取美国邮政编码但不提取伪代码

python - 将 selenium python 保存到 s3

python - 阅读 ID3 标签的最佳库是什么?