da ich mit dem Adressbuch nich zufriden war und auch keine Lust mehr hatte weiterzumachen
 , hab ich mich entschlossen etwas zu schreiben, was ich selber auch gebrauchen kann.
, hab ich mich entschlossen etwas zu schreiben, was ich selber auch gebrauchen kann.Also hab ich mich entschlossen nen CSS-Parser zu schreiben(den Vorschlag hat irgendjemand hier im Forum gebracht, also es nich 100% auf meinem Mist gewaschen
 )
 )Nunja, bis jetz ist er noch nich wirklich fertig. Soweit bin ich:
Man bekommt ein Dictionary mit dem Tag, das definiert wurde, als key und als Value eine Liste von den Definitionen.
TODO:
- Fehler ausgeben, wenn ein Semikolon vergessen wurde
- Warnungen ausgeben, wenn etwas vergessen wurde(z.B. keine Vordergrundfarbe trotz definierter HG-Farbe)
- GUI
Kritik und Verbessrungsvorschläge sind erwünscht.
Greetz
----------------------------------------------------------------------------
CSS-Parser (0.0.1a):
Code: Alles auswählen
#!/usr/bin/python
#-*- encoding: utf-8 -*-
class CSSParser:
#-------------------------------------------
    def __init__(self, css):
        #Open CSS file
        self.f = open(css, 'r')
        #Read all lines of the file
        self.lines = self.f.read()
#-------------------------------------------
    def getAttributes(self):
        '''
        Fetch all attributes and there related tags and return them as a dict
        :return tagAttributes: dictionary with the tag as key and a list of the
                               tags definitions as value
        '''
        #get all indexes of the char `}`
        indexes = self._getIndexes(self.lines, '}')
        #and the strings between the indexes
        defs = self._getTags(self.lines,indexes)
        tagAttributes = dict()
        for defin in defs:
            #delete all newlines, tabs and leading and following whitespaces
            defin = defin.replace('\n', '').replace('\t', '').strip()
            attributes = list()
            if defin:
                #get a list of the tagdefinitions
                splitedTag = defin.split('{')
                attrs = splitedTag[1].replace('}', '').strip().split(';')
                #add all definitions in a list
                attributes = [attr for attr in attrs if attr]
                #add the values to the dict
                tagAttributes[splitedTag[0].strip()] = attributes
        #return the dict
        return tagAttributes
#-------------------------------------------
    def _getIndexes(self, string, char):
        '''
        Get the indexes of a string by `char`
        :param string: string may containing char
        :param char: character to search for it to get the indexes
        :return indexes: the indexes if found
        '''
        indexes = [0,]
        while True:
            try:
                #try to get the index number
                index = string.index(char, indexes[-1]) + 1
                #if string.index() was succesfull add the index to the list
                indexes.append(index)
            #break if a ValueError is raised
            except ValueError:
                break
        #return the list with the indexes
        return indexes
#-------------------------------------------
    def _getTags(self, string, indexes):
        '''
        Get the tags with there definitions and return them in a list
        :param string: string witch contains the previously gotten indexcharacters
        :param indexes: a list containing the indexes
        :return tags: a list with the tags and there definitions
        '''
        #last index
        lindex = 0
        tags = list()
        for index in indexes:
            #add the tag to the list
            tags.append(string[lindex:index])
            #update the last index
            lindex = index
        #return the Tags
        return tags
##################### Programmtests #######################
def main():
    css = CSSParser('css.css')
    for key, val in css.getAttributes().items():
        print key + ':'
        for val in val:
            print '\t' + val
        print '-'*40
if __name__ == '__main__':
    main()


 
 - Ich brauch nurn bisschen Hilfe von euch.
 - Ich brauch nurn bisschen Hilfe von euch.