替换文件Python中的CSS文本块

时间:2015-05-20 21:00:31

标签: python css text replace edit

我想制作一个python程序来帮助我对配置文件进行简单的编辑。我希望能够读取文件,替换文件的一部分,然后写入更改。我遇到的一个问题是有多条线是相同的。例如,配置文件如下所示:

/* Panel */

#panel {
    background-color: black;
    font-weight: bold;
    height: 1.86em;
}
#panel.unlock-screen,
#panel.login-screen {
    background-color: transparent;

有两行包含背景颜色:所以我无法测试该行是否等于字符串,因为如果我要替换包含背景颜色的每一行:我会得到不需要的更改。 此外,我不想依赖行的索引,因为添加或删除配置文件的行,它将更改。  任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

看起来你正在尝试处理CSS文件。要正确解析此文件格式,您需要类似的东西 cssutils

import cssutils

# Parse the stylesheet, replace color
parser = cssutils.parseFile('style.css')
for rule in parser.cssRules:
    try:
        if rule.selectorText == '#panel':
            rule.style.backgroundColor = 'blue'  # Replace background
    except AttributeError as e:
        pass  # Ignore error if the rule does not have background

# Write to a new file
with open('style_new.css', 'wb') as f:
    f.write(parser.cssText)

更新

我对代码进行了更改,现在只更改#panel

的背景