2013-01-15 31 views
5

Renk körü insanlara yardımcı olmak için Python'daki CSS dosyalarını deniyorum. Her seçici bloğun içine girmem ve 'arka plan:' ve 'renk:' değerini değiştirmem gerekiyor. tinycss gibi CSS ayrıştırıcılarını kullanmayı denedim, ancak seçicilerin üzerinde yoğunlaşmıyorlar.Python CSS Ayrıştırıcı

Örnek girişi:

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

Ve çıkışı:

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

“input” ve waht'ın “output” ı ( – user2134226

+0

INPUT: "body {background: #fff; color: #ccc}" gibi) ve bunun gibi birçok bloğu gösterebileceğini gösterebilirsiniz. ÇIKIŞ: "gövde {background: # 000; color: #aaa}" [belirtilen teknik özelliklere göre renk değiştirildi] –

+1

Bir ipucu olarak, bazı kişilerin hiçbir renk göremediğini lütfen unutmayın. Sadece renkleri değiştirmek yeterli değildir. Bunu düzgün bir şekilde yapabilmeniz için, renklerin tek başına bilgiyi ayırt etmenin tek yolu olmaması için ek ipuçlarını eklemeniz gerekir. – Arafangion

cevap

1

kullanabilirdin seçicileri ile çalışmak. Bu yüzden kendi ayrıştırıcımı yapmaya başladım. CSS dosyasındaki #XXX, #XXXXXX, rgb (X, X, X), hsl (X, X, X) gibi renk desenlerini aramak için düzenli bir ifade oluşturdum, içinde bulundukları konumları korumak için bir liste tuttum CSS dosyası. Sonra tüm renkleri listeye göre belirtilen pozisyonlarda tekrar yazdım. Yaptığım şey için verebileceğim en iyi özet bu. Çok detaylı bir açıklamaya ihtiyacınız varsa lütfen yorum ekleyin. Teşekkür ederim.

1

bu deneyin:

http://cthedot.de/cssutils/

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

o css prosedürü kullanmak oldukça basit ssing.

ben normal ifadeler kullanarak bu sorunu çözdü cssutils.css.SelectorList ve cssutils.css.Selector

+0

Ama seçmenlerle nasıl çalışacaklarını söylemediler. –

+0

kütüphanesinin güzel bir dökümantasyonu var. –

+0

Bunu yapmak için çok uğraşıyorum ancak seçici sınıfı CSSStylerule sınıfı ile ilgilidir. Burada önemini anlamak için zor bir zaman geçiriyorum. Gerçekten şimdi beni rahatsız ediyor :( –