Code: Alles auswählen
Sonnenschein = "Die Sonne scheint: [1, "Maier: begeistert"], Die Wolken sind grau: [2,"Udu: traurig"]"
Wie könnte man das hinkriegen?
Mfg
Udu
Code: Alles auswählen
Sonnenschein = "Die Sonne scheint: [1, "Maier: begeistert"], Die Wolken sind grau: [2,"Udu: traurig"]"
Code: Alles auswählen
Dictionary = {
"Die Sonne scheint": [1, "Maier: begeistert"], 
"Die Wolken sind grau": [2,"Udu: traurig]"
...
}
Code: Alles auswählen
from pprint import pprint
import pyparsing as pp
def main():
    sonnenschein = ('Die Sonne scheint: [1, "Maier: begeistert"],'
                    ' Die Wolken sind grau: [2,"Udu: traurig"]')
    
    key = pp.CharsNotIn(':')
    value = pp.Combine('[' + pp.CharsNotIn(']') + ']')
    item = pp.Group(key + pp.Suppress(':') + value)
    items = pp.Dict(pp.delimitedList(item))
    
    result = items.parseString(sonnenschein)
    pprint(result.asDict())
if __name__ == '__main__':
    main()Code: Alles auswählen
$ python forum5.py
{'Die Sonne scheint': '[1, "Maier: begeistert"]',
 'Die Wolken sind grau': '[2,"Udu: traurig"]'}Erst einmal müsste der Code wie folgt aussehen:USER67 hat geschrieben:Ich würde gerne nach ":" spliten, allerdings soll es nur oberflächlich passieren, in den Listen soll es nicht geschehen.Code: Alles auswählen
Sonnenschein = "Die Sonne scheint: [1, "Maier: begeistert"], Die Wolken sind grau: [2,"Udu: traurig"]"
Code: Alles auswählen
Sonnenschein = 'Die Sonne scheint: [1, "Maier: begeistert"], Die Wolken sind grau: [2,"Udu: traurig"]'Code: Alles auswählen
In [27]: data = u"""Die Sonne scheint: [1, "Maier: begeistert"], Die Wolken sind grau: [2,"Udu: traurig"]"""
In [30]: for token in re.findall("[ \w]*: \[.*?\]", data):
   ....:     print token
   ....:     
   ....:     
Die Sonne scheint: [1, "Maier: begeistert"]
 Die Wolken sind grau: [2,"Udu: traurig"]
Code: Alles auswählen
In [34]: re.findall("(?P<key>[ \w]*): (?P<value>\[.*?\])", data)
Out[34]: 
[(u'Die Sonne scheint', u'[1, "Maier: begeistert"]'),
 (u' Die Wolken sind grau', u'[2,"Udu: traurig"]')]
Code: Alles auswählen
In [712]: dict(re.findall(r'\s*(?P<key>[^:]+): (?P<value>\[.*?\]),?', data))
Out[712]:
{'Die Sonne scheint': '[1, "Maier: begeistert"]',
 'Die Wolken sind grau': '[2,"Udu: traurig"]'}