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
Post a Comment