什么是实现css解析器/替换器的pythonic方法

ari*_*ikg 5 python

我想实现一个脚本来读取CSS文件并对其进行有意义的更改(添加/删除/替换行/单词等).基本逻辑是实现RTL(从右到左)转换.

我可以想到很多方法:

  • 文件阅读器 - 读取一行,分析它并对其进行必要的更改.
  • 两相扫描 - 在内存模型中创建,扫描并更改它,将模型保存到文本.
  • 正则表达式 - 可能很难,因为其中一些可能非常复杂.

基本上我想知道的是这些或其他方法中的哪一种是python方式呢?有什么相关的图书馆你认为我应该熟悉这种操作吗?

编辑:应该注意的是,这是一个"通过这个可用项目学习python"的项目,所以我不熟悉你在这里提到的大多数库.

Sim*_*pin 12

如果你想要"快速和肮脏"的东西,有很多有趣的方法可以做到这一点.(正如你所说:逐行,正则表达式,......)

但是如果你想"正确"(在所有类型的输入上都正确),你需要一个基于官方CSS标记化和语法的真正解析器.在Python中有cssutilstinycss.(免责声明:我是tinycss的作者.)如果你想学习,我想认为tinycss的源代码很简单易学:)

  • arikg:就是:http://exyr.org/2012/tinycss-css-parser/ 简而言之,主要是 cssutils 不容易扩展新语法。 (2认同)
  • 是的,tinycss没有包含适当的序列化器。我建议改用https://github.com/SimonSapin/tinycss2。 (2认同)