用python创建csv文件-从CSV文件创建字典 - python

我正在尝试编写一个Python脚本,该脚本将从CSV文件中获取输入,然后将其推入字典格式(我使用的是Python 3.x)。

我使用下面的代码读取CSV文件,并且可以正常工作:

import csv

reader = csv.reader(open("C:\Users\Chris\Desktop\test.csv"), delimiter=",", quotechar="|")

for row in reader:

print(", ".join(row))

但是现在我想将结果放入字典中。我希望将CSV文件的第一行用作字典的“键”字段,而CSV文件中的后续行将填充数据部分。

样本数据:

Date First Name Last Name Score

12/28/2012 15:15 John Smith 20

12/29/2012 15:15 Alex Jones 38

12/30/2012 15:15 Michael Carpenter 25

我还想对这段代码进行其他操作,但是现在我要寻找的只是使字典能够正常工作。

谁能帮我这个?

编辑版本2:

import csv

reader = csv.DictReader(open("C:\Users\Chris\Desktop\test.csv"))

result = {}

for row in reader:

for column, value in row.items():

result.setdefault(column, []).append(value)

print("Column -> ", column, " Value -> ", value)

print(result)

fieldnames = result.keys()

csvwriter = csv.DictWriter(open("C:\Users\Chris\Desktop\test_out.csv", "w"), delimiter=",", fieldnames=result.keys())

csvwriter.writerow(dict((fn,fn) for fn in fieldnames))

for row in result.items():

print("Values -> ", row)

#csvwriter.writerow(row)

"""

Test output

"""

test_array = []

test_array.append({"fruit": "apple", "quantity": 5, "color": "red"});

test_array.append({"fruit": "pear", "quantity": 8, "color": "green"});

test_array.append({"fruit": "banana", "quantity": 3, "color": "yellow"});

test_array.append({"fruit": "orange", "quantity": 11, "color": "orange"});

fieldnames = ["fruit", "quantity", "color"]

test_file = open("C:\Users\Chris\Desktop\test_out.csv","w")

csvwriter = csv.DictWriter(test_file, delimiter=",", fieldnames=fieldnames)

csvwriter.writerow(dict((fn,fn) for fn in fieldnames))

for row in test_array:

print(row)

csvwriter.writerow(row)

test_file.close()

python大神给出的解决方案

创建一个字典,然后遍历结果并将行填充到字典中。请注意,如果遇到日期重复的行,则必须决定要做什么(引发异常,替换上一行,丢弃下一行等)。

这是test.csv:

Date,Foo,Bar

123,456,789

abc,def,ghi

和相应的程序:

import csv

reader = csv.reader(open("test.csv"))

result = {}

for row in reader:

key = row[0]

if key in result:

# implement your duplicate row handling here

pass

result[key] = row[1:]

print(result)

产量:

{"Date": ["Foo", "Bar"], "123": ["456", "789"], "abc": ["def", "ghi"]}

或者,使用DictReader:

import csv

reader = csv.DictReader(open("test.csv"))

result = {}

for row in reader:

key = row.pop("Date")

if key in result:

# implement your duplicate row handling here

pass

result[key] = row

print(result)

结果是:

{"123": {"Foo": "456", "Bar": "789"}, "abc": {"Foo": "def", "Bar": "ghi"}}

或者,您可能希望将列标题映射到该列的值列表:

import csv

reader = csv.DictReader(open("test.csv"))

result = {}

for row in reader:

for column, value in row.items(): # consider .iteritems() for Python 2

result.setdefault(column, []).append(value)

print(result)

产生:

{"Date": ["123", "abc"], "Foo": ["456", "def"], "Bar": ["789", "ghi"]}

Python pytz时区函数返回的时区为9分钟 - python

由于某些原因,我无法从以下代码中找出原因:>>> from pytz import timezone >>> timezone("America/Chicago") 我得到:

我的正则表达式:vendor = "MyNameIsJoe. I"mWorkerInAAAinc." ven = re.split(r"(?<=[a-z])[A-Z]|[A-Z](?=[a-z])", vendor) 以大写字母分割字符串,例如:"我的名字是乔。 I"mWorkerInAAAinc”变成…Python:同时在for循环中添加到列表列表 - python

我想用for循环外的0索引值创建一个新列表,然后使用for循环添加到相同的列表。我的玩具示例是:import random data = ["t1", "t2", "t3"] masterlist = [["col1", "animal1", "an…如何获取Python中所有内置函数的列表 - python

当我们从中获取关键字列表时,如何从Python提示符中获取Python中所有内置函数的列表? python大神给出的解决方案 更新:关于__builtins__或__builtin__可能会有一些混淆。What’s New In Python 3.0建议使用builtins 将模块__builtin__重命名为builtins(删除下划线, 添加一个“ s”…Python查找单词可以用字符构建 - python

Closed. This question needs details or clarity。它当前不接受答案。 想改善这个问题吗?添加详细信息并通过editing this post阐明问题。 4个月前关闭。 Improve this question 我想找出单词"apple"(word_list)是否可以用char_list1构建但不能用char_li…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值