我正在使用DictReader()读取csv文件。函数返回一个字典,其中标题项是键,单元格是值。很酷。
但我试图解释数据可能不是我期望的那样的行。在这种情况下(我捕捉到一个ValueError异常),我希望“可疑”的行进入一个单独的字典,以便手动处理。
我的问题是:由于我的第一个字典(DictReader返回的对象)的所有键都设置正确,我如何将仅键复制到第二个字典(我只想成为可疑行的字典)中进行手动处理?
我一直在玩弄dict.fromkeys()之类的东西,现在我什么也没得到。停下!
编辑:粘贴我的一些错误代码。为了我的密码而躲起来。别评判我!;-)
unsure_rows = dict.fromkeys(dict(csv_reader).keys(), [])
for row in csv_reader:
# if row['Start Time'] != 'None':
try:
if before_date > strptime(row['Start Time'], '%Y-%m-%d %H:%M:%S') > after_date:
continue
except ValueError:
unsure_rows += row
值错误:字典更新序列元素0的长度为13;需要2
你很接近。尝试:
dict.fromkeys(my_csv_dict.keys(),[])
这将使用从CSV文件中解析的相同键初始化一个字典,每个键都将映射到一个空列表(我假设,您会将可疑的行值附加到该列表)。
试试这个。(这里有一些细微的更改是必需的,比如在开始读取CSV之前,不能初始化不确定的行。)
您不想将“just the keys”复制到另一个字典,但是如果您有“just the keys”,您将有一个集合。
要从dict
d
获取密钥,只需说d.keys()
。这将返回一个列表(具有任意顺序的键),您可以将其保存为列表或复制到
示例:
编辑:
现在我看到您打算在捕获异常时捕获可疑的键值对。在这种情况下,只要从一个空字典开始
在你的代码中,我可以想象是某种循环,添加可疑的键值对,如下所示:
你试过了吗:
是吗?如果这对你不起作用,那么请添加更多关于错误的详细信息。
相关问题 更多 >
编程相关推荐