2013-01-15 10 views
5

Eksperymentuję z plikami CSS w Pythonie, aby pomóc osobom niewidomym kolorowym. Muszę wejść do każdego bloku selektora i zmienić "background:" i "color:". Próbowałem używać parserów CSS, takich jak tinycss, ale nie koncentrują się one na uzyskiwaniu selektorów.Python CSS Parser

Przykład Wejście:

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

i wyjście:

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

możesz pokazać, co to jest 'input' i waht, które chcesz' output' jak – user2134226

+0

INPUT: "body {background: #fff; color: #ccc}" ... i wiele takich bloków. WYJŚCIE: "body {background: # 000; color: #aa}" [kolor zmieniany zgodnie ze specyfikacją] –

+1

Jako wskazówka, należy pamiętać, że niektórzy ludzie nie widzą żadnych kolorów. Po prostu zmiana kolorów nie wystarczy. Aby móc to zrobić właściwie, musisz dodać dodatkowe sygnały, aby sam kolor nie był jedynym sposobem na odróżnienie informacji. – Arafangion

Odpowiedz

1

I rozwiązać ten problem za pomocą wyrażeń regularnych. Więc skończyło się na stworzeniu własnego parsera. Utworzyłem wyrażenie regularne, aby wyszukać wzorce kolorów, takie jak #XXX, #XXXXXX, rgb (X, X, X), hsl (X, X, X) w pliku CSS, zachowałem listę, aby zachować pozycje, w których się znajdują plik CSS. Potem ponownie napisałem wszystkie kolory na pozycjach określonych przez listę. To najlepsze podsumowanie, jakie mogę podać za to, co zrobiłem. Dodaj komentarz, jeśli potrzebujesz bardzo szczegółowego wyjaśnienia. Dziękuję Ci.

1

spróbuj tego:

http://cthedot.de/cssutils/

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

to dość proste w użyciu w css proce ssing.

pracować z selektorów można użyć cssutils.css.SelectorList i cssutils.css.Selector

+0

Ale oni nie wspomnieli, jak pracować z selektorami. –

+0

to biblioteka ma ładną dokumentację. –

+0

Próbuję to zrobić, ale klasa selektora jest powiązana z klasą CSSStylerule. Trudno mi zrozumieć jego znaczenie. To naprawdę mnie teraz podrażnia :( –