Ken Starks wrote: > Ilias Lazaridis wrote: > >>within a python script, I like to create a collection which I fill with >>values from an external text-file (user editable). >> >>How is this accomplished the easiest way (if possible without the need >>of libraries which are not part of the standard distribution)? >> >>something like: >> >>text-file: >>{peter, 16}, >>{anton, 21} >> >>- >> >>within code: >> >>users.load(text-file.txt) >> >>for user in users >> user.name >> user.age [...]
the solutions below seems to be the most compact one. this, or the suggested CSV module within the other messages. thank's to everyone for the feedback. [...] > If you want to use a plain text format, keep it simple. I would > separate the two fields with tab (thus permit a comma within a field) > and allow 'comment' lines that start with a hash. > You don't need the braces, or the end-of-line comma you included. > > # snip 'text-file.txt' > # name and age on one line separated by tab > Jonny 8 > Mary 87 > Moses 449 > > > # end-snip 'text-file.txt' > Then: > """ > > import string > > class user: > def __init__(self,name,age): > self.name=name > self.age=int(age) # or a float, or a time-interval, or date-of-birth > > def show(self): > print "%s is aged %s" % (self.name, self.age) > > if __name__=="__main__": > users=[] > filename="text-file.txt" > fieldsep="\t" > F=open(filename,"r") > Lines=F.readlines() > for L0 in Lines: > L1=string.strip(L0) > if not L1.startswith("#"): > Record=string.split(L1,fieldsep) > # insert error handling/validation here > users.append(user(Record[0],Record[1])) > > F.close() > for user in users: > user.show() . -- http://lazaridis.com -- http://mail.python.org/mailman/listinfo/python-list