2013-01-15 12 views
5

Sto sperimentando con i file CSS in Python per aiutare le persone daltoniche. Devo entrare in ogni blocco di selezione e cambiare "sfondo:" e "colore:". Ho provato a usare parser CSS come tinycss ma non si stanno concentrando sull'ottenere selettori.Python CSS Parser

ingresso Esempio:

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

E uscita:

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

puoi mostrare quale è l'input e che vuoi l'output come – user2134226

+0

INPUT: "body {background: #fff; color: #ccc}" ... e molti blocchi come questo. OUTPUT: "body {background: # 000; color: #aaa}" [colore cambiato in base alle specifiche fornite] –

+1

Come suggerimento, si prega di essere consapevoli del fatto che alcune persone non possono vedere alcun colore. Cambiare semplicemente i colori non è abbastanza. Per essere in grado di farlo correttamente, è necessario aggiungere ulteriori spunti in modo che il colore da solo non sia l'unico modo per distinguere le informazioni. – Arafangion

risposta

1

Ho risolto questo problema utilizzando le espressioni regolari. Così ho finito per creare il mio parser. Ho formato un'espressione regolare per cercare pattern di colore come #XXX, #XXXXXX, rgb (X, X, X), hsl (X, X, X) nel file CSS, mantenuto un elenco per mantenere le posizioni in cui si trovano il file CSS. Quindi ho appena riscritto tutti i colori nelle posizioni specificate dalla lista. Questo è il miglior riassunto che posso dare per quello che ho fatto. Per favore aggiungi un commento se hai bisogno di una spiegazione molto dettagliata. Grazie.

1

provare questo:

http://cthedot.de/cssutils/

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

è abbastanza semplice da utilizzare in css proce ssing.

a lavorare con i selettori si potrebbe usare cssutils.css.SelectorList e cssutils.css.Selector

+0

Ma non hanno menzionato come lavorare con i selettori. –

+0

la sua libreria ha una bella documentazione. –

+0

Sto provando a farlo ma la classe selector è correlata alla classe CSSStylerule. Sto avendo un momento difficile per capire il suo significato qui. Mi sta davvero facendo impazzire :( –