Fantastic, Thanks Hugo that makes 100% sense now! Testing both regex for including / and doing split and when done throwing both away and using the default module.
Regards On Wed, Oct 12, 2011 at 2:49 PM, Hugo Arts <hugo.yo...@gmail.com> wrote: > On Wed, Oct 12, 2011 at 3:41 PM, Gerhardus Geldenhuis > <gerhardus.geldenh...@gmail.com> wrote: > > Hi > > I wrote the following code: > > f = open('/etc/passwd', 'r') > > users = f.read() > > userelements = re.findall(r'(\w+):(\w+):(\w+):(\w+):(\w+):(\w+):(\w+)', > > users) > > print userelements > > for user in userelements: > > (username, encrypwd, uid, gid, gecos, homedir, usershell) = user # > > unpack the tuple into 7 vars > > print username > > > > but I get no results so my parsing must be wrong but I am not sure why. > > Incidentally while googling I found the > > module http://docs.python.org/library/pwd.html which I will eventually > use > > but I am first curious to fix and understand the problem before I throw > away > > this code. > > Regards > > > > the homedir and usershell parts are paths. Paths will contain slashes. > The \w character class captures only [A-Za-z0-9_], that is, letters, > numbers, and the underscore. That means slashes will not match, and so > the entire match fails. > > On another note, the structure of the /etc/passwd file is pretty > simple, I don't think you need regexes. Simply use split: > > users = f.readlines() > for user in users: > (username, encrypwd, uid, gid, gecos, homedir, usershell) = > user.split(':') > > HTH, > Hugo > -- Gerhardus Geldenhuis
_______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: http://mail.python.org/mailman/listinfo/tutor