我正在尝试编写一个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…