gpt4 book ai didi

python - 如何解析这个逗号分隔值列表

转载 作者:太空宇宙 更新时间:2023-11-03 18:50:24 25 4
gpt4 key购买 nike

我有一个以逗号分隔的用户及其权限的列表,其中某些用户最多拥有 8 个权限:

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

我需要输出以逗号分隔的用户和权限列表,其中每个用户和权限对都位于单独的行上:

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

下面使用 csv 模块的 python 代码当前无法工作:

import csv

with open('user_list.csv') as user_list:
dict_reader = csv.DictReader(user_list)
ul = []
for row in dict_reader:
ul.append(row)

with open('output.txt','w') as output:
fields = 'USER','PERM1','PERM2','PERM3','PERM4',
'PERM5','PERM6','PERM7','PERM8'
dict_writer = csv.DictWriter(output, fields)
csv.DictWriter.writeheader(dict_writer)
for i in ul:
dict_writer.writerow(i)

它给了我以下回溯:

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

知道为什么这不起作用吗?或者,有更好的方法来实现我想要的输出吗?也许正则表达式会更好?

最佳答案

问题是这一行:

fields = 'USER','PERM1','PERM2','PERM3','PERM4',
'PERM5','PERM6','PERM7','PERM8'

您的代码正在执行 fields = 'USER','PERM1','PERM2','PERM3','PERM4', (请记住,元组和列表在最后一项后可以有尾随逗号) ,然后创建另一个元组 ('PERM5','PERM6','PERM7','PERM8') 并且不对其执行任何操作。

然后,当您创建 csv.DictWriter 时,它只包含第一个元组中的字段 - 因此您会收到错误。

解决方案很简单:在元组周围使用括号,然后为您提供隐含的行延续:

fields = ('USER','PERM1','PERM2','PERM3','PERM4',
'PERM5','PERM6','PERM7','PERM8')

您也可以使用反斜杠来转义换行符,但括号更容易阅读。

关于python - 如何解析这个逗号分隔值列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18498787/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com