2013-01-15 5 views
5

J'expérimente avec des fichiers CSS en Python pour aider les personnes daltoniennes. J'ai besoin d'entrer dans chaque bloc sélecteur et de changer le 'background:' et la 'color:'. J'ai essayé d'utiliser des parseurs CSS comme tinycss mais ils ne se concentrent pas sur l'acquisition de sélecteurs.Python CSS Parser

entrée Exemple:

body {background:#fff; color:#ccc} 

Et sortie:

body {background:#000; color:#aaa} 
+0

pouvez-vous montrer quelle est la 'input' et waht que vous voulez le' sortie' comme – user2134226

+0

INPUT: "body {background: #fff; color: #ccc}" ... et beaucoup de blocs comme ceci. SORTIE: "body {background: # 000; color: #aaa}" [couleur changée selon les spécifications données] –

+1

En guise de conseil, sachez que certaines personnes ne peuvent voir aucune couleur. Changer simplement les couleurs ne suffit pas. Afin de pouvoir le faire correctement, vous devez ajouter des indices supplémentaires afin que la couleur seule ne soit pas le seul moyen de distinguer les informations. – Arafangion

Répondre

1

J'ai résolu ce problème en utilisant des expressions régulières. Donc j'ai fini par faire mon propre analyseur. J'ai créé une expression régulière pour rechercher des motifs de couleur tels que #XXX, #XXXXXX, rgb (X, X, X), hsl (X, X, X) dans le fichier CSS, maintenu une liste pour conserver les positions dans lesquelles ils se trouvent le fichier CSS. Ensuite, je viens de ré-écrire toutes les couleurs aux positions spécifiées par liste. C'est le meilleur résumé que je puisse donner pour ce que j'ai fait. S'il vous plaît ajouter un commentaire si vous avez besoin d'une explication très détaillée. Je vous remercie.

1

essayez ceci:

http://cthedot.de/cssutils/

parser = CSSParser() 
# optionally 
parser.setFetcher(fetcher) 
sheet = parser.parseFile('test1.css', 'ascii') 
print sheet.cssText 

il est assez simple à utiliser dans procé css ssing.

pour travailler avec des sélecteurs, vous pouvez utiliser cssutils.css.SelectorList et cssutils.css.Selector

+0

Mais ils n'ont pas mentionné comment travailler avec des sélecteurs. –

+0

sa bibliothèque a une jolie documentation. –

+0

J'essaie de le faire mais la classe de sélecteur est liée à la classe CSSStylerule. J'ai du mal à comprendre sa signification ici. Ca me dérange vraiment maintenant :( –