python - How can I parse this list of comma separated values -


i have list of comma-separated users , permissions, users have 8 permissions:

user_a, permission_1 user_b, permission_1, permission_2 user_c, permission_1, permission_2, permission_3 

i need output list of comma-separated users , permissions, every user , permission pair on separate line:

user_a, permission_1 user_b, permission_1 user_b, permission_2 user_c, permission_1 user_c, permission_2 user_c, permission_3 

my python code below using csv module not working:

import csv  open('user_list.csv') user_list:     dict_reader = csv.dictreader(user_list)     ul = []     row in dict_reader:         ul.append(row)  open('output.txt','w') output:     fields = 'user','perm1','perm2','perm3','perm4',     'perm5','perm6','perm7','perm8'     dict_writer = csv.dictwriter(output, fields)     csv.dictwriter.writeheader(dict_writer)     in ul:         dict_writer.writerow(i) 

it's giving me following traceback:

traceback (most recent call last):   file "cops_ul_parse.py", line 15, in <module>     dict_writer.writerow(i)   file "c:\python27\lib\csv.py", line 148, in writerow     return self.writer.writerow(self._dict_to_list(rowdict))   file "c:\python27\lib\csv.py", line 144, in _dict_to_list     ", ".join(wrong_fields)) valueerror: dict contains fields not in fieldnames: perm8, perm7, perm6, perm5 

any idea why isn't working? or, there better way accomplish desired output? maybe regex work better?

the issue line:

fields = 'user','perm1','perm2','perm3','perm4', 'perm5','perm6','perm7','perm8' 

your code doing fields = 'user','perm1','perm2','perm3','perm4', (remember tuples , lists can have trailing commas after last item), , making tuple ('perm5','perm6','perm7','perm8') , doing nothing it.

then, when make csv.dictwriter, has fields first tuple - hence error getting.

the solution simple: use brackets around tuple, gives implied line continuation:

fields = ('user','perm1','perm2','perm3','perm4',           'perm5','perm6','perm7','perm8') 

you can use backslash escape line break too, brackets nicer read.


Comments

Popular posts from this blog

Unable to remove the www from url on https using .htaccess -