【问题标题】:python how to parse css file as key value [closed]python如何将css文件解析为键值[关闭]
【发布时间】:2014-02-09 13:41:17
【问题描述】:

我有一个类似的 CSS:

body, html { aaa: aaa }
h1, h2 { bbb: bbb; }
h3, h4, h5 { ccc: ccc; }

我想解析这个字符串并得到一个有序的字典/或类似的东西:

{
    'body, html': 'aaa: aaa',
    'h1, h2':  'bbb: bbb;',
    'h3, h4, h5': 'ccc: ccc;'
}

我想知道所有选择器及其属性

有人知道任何 python 库来完成这个吗?

谢谢!

【问题讨论】:

标签: python css parsing


【解决方案1】:

我建议使用cssutils 模块。

import cssutils
from pprint import pprint

css = u'''
body, html { color: blue }
h1, h2 { font-size: 1.5em; color: red}
h3, h4, h5 { font-size: small; }
'''

dct = {}
sheet = cssutils.parseString(css)

for rule in sheet:
    selector = rule.selectorText
    styles = rule.style.cssText
    dct[selector] = styles


pprint(dct)

输出:

{u'body, html': u'color: blue',
 u'h1, h2': u'font-size: 1.5em;\ncolor: red',
 u'h3, h4, h5': u'font-size: small'}

在您的问题中,您要求提供键/值表示。但是,如果您确实想访问单独的选择器或属性,请使用 rule.selectorList 并遍历其属性以获取 rule.style

for property in rule.style:
    name = property.name    
    value = property.value

【讨论】:

  • 我遇到了一些关于 cmets 的问题,以及一些更复杂的 CSS 的其他返回规则。希望这可以节省一些时间来只返回样式规则。 ignored_rules = [ cssutils.css.csscomment.CSSComment, cssutils.css.cssfontfacerule.CSSFontFaceRule, cssutils.css.cssmediarule.CSSMediaRule, cssutils.css.cssunknownrule.CSSUnknownRule, ] for rule in sheet: if any((isinstance(rule, rule_type) for rule_type in ignored_rules)): continue selector = rule.selectorText
猜你喜欢
  • 2017-11-06
  • 1970-01-01
  • 1970-01-01
  • 2013-10-28
  • 1970-01-01
  • 2014-06-27
  • 1970-01-01
  • 2018-06-18
相关资源
最近更新 更多