manstey schreef: > Hi, > > I have a text file called a.txt: > > # comments > [('recId', 3), ('parse', {'pos': u'np', 'gen': u'm'})] > [('recId', 5), ('parse', {'pos': u'np', 'gen': u'm'})] > [('recId', 7 ), ('parse', {'pos': u'np', 'gen': u'm'})] > > I read it using this: > > filAnsMorph = codecs.open('a.txt', 'r', 'utf-8') # Initialise input > file > dicAnsMorph = {} > for line in filAnsMorph: > if line[0] != '#': # Get rid of comment lines > x = eval(line) > dicAnsMorph[x[0][1]] = x[1][1] # recid is key, parse dict is > value > > But it crashes every time on x = eval(line). Why is this? If I change > a.txt to: > > # comments > [('recId', 3), ('parse', {'pos': u'np', 'gen': u'm'})] > > it works fine. Why doesn't it work with multiple lines? it's driving me > crazy!
It looks like it's because of the trailing newline. When you read a file like that, the newline at the end of each line is still in line. You can strip it e.g. with rstrip, like so: x = eval(line.rstrip('\n')) -- If I have been able to see further, it was only because I stood on the shoulders of giants. -- Isaac Newton Roel Schroeven -- http://mail.python.org/mailman/listinfo/python-list