Python 如何基于CSV文件创建字典
我有一个csv文件,格式如下:Python 如何基于CSV文件创建字典,python,dictionary,pycharm,Python,Dictionary,Pycharm,我有一个csv文件,格式如下: #ID #Number #Date #Name #Email 1978 26 24/4/10 Jim Jim@randomemail.com 1328 31 22/7/10 Jim Kim@randomemail.com 1908 26 21/4/10 Jim Dim@randomemail.com 1918 26 29/4/10 Jim Rim@randomemail.com 1938 46 24/4/10 Jim Lim@rand
#ID #Number #Date #Name #Email
1978 26 24/4/10 Jim Jim@randomemail.com
1328 31 22/7/10 Jim Kim@randomemail.com
1908 26 21/4/10 Jim Dim@randomemail.com
1918 26 29/4/10 Jim Rim@randomemail.com
1938 46 24/4/10 Jim Lim@randomemail.com
我已经打开了csv文件并打印出来了
我现在想把它做成一本字典,比如:
[ID:1978,号码:26,日期:24/4/10,姓名:Jim,电子邮件:
Jim@randomemail.com],[etc],[etc]
我知道这可能很容易,但我是新来的,已经被困了几个小时 >在我的评论后面,考虑一些类似的事情:
import csv
with open('file.txt', 'r') as f:
reader = csv.DictReader(f, delimiter=' ', skipinitialspace=True)
for row in reader:
print(row)
import csv
with open('file.txt', 'r') as f:
reader = csv.DictReader(f, delimiter=' ', skipinitialspace=True)
rows = list(reader)
print(rows)
输出:
OrderedDict([('#ID', '1978'), ('#Number', '26'), ('#Date', '24/4/10'), ('#Name', 'Jim'), ('#Email', 'Jim@randomemail.com')])
OrderedDict([('#ID', '1328'), ('#Number', '31'), ('#Date', '22/7/10'), ('#Name', 'Jim'), ('#Email', 'Kim@randomemail.com')])
OrderedDict([('#ID', '1908'), ('#Number', '26'), ('#Date', '21/4/10'), ('#Name', 'Jim'), ('#Email', 'Dim@randomemail.com')])
OrderedDict([('#ID', '1918'), ('#Number', '26'), ('#Date', '29/4/10'), ('#Name', 'Jim'), ('#Email', 'Rim@randomemail.com')])
OrderedDict([('#ID', '1938'), ('#Number', '46'), ('#Date', '24/4/10'), ('#Name', 'Jim'), ('#Email', 'Lim@randomemail.com')])
产生
[
OrderedDict([('#ID', '1978'), ('#Number', '26'), ('#Date', '24/4/10'), ('#Name', 'Jim'), ('#Email', 'Jim@randomemail.com')]),
OrderedDict([('#ID', '1328'), ('#Number', '31'), ('#Date', '22/7/10'), ('#Name', 'Jim'), ('#Email', 'Kim@randomemail.com')]),
OrderedDict([('#ID', '1908'), ('#Number', '26'), ('#Date', '21/4/10'), ('#Name', 'Jim'), ('#Email', 'Dim@randomemail.com')]),
OrderedDict([('#ID', '1918'), ('#Number', '26'), ('#Date', '29/4/10'), ('#Name', 'Jim'), ('#Email', 'Rim@randomemail.com')]),
OrderedDict([('#ID', '1938'), ('#Number', '46'), ('#Date', '24/4/10'), ('#Name', 'Jim'), ('#Email', 'Lim@randomemail.com')])
]
产生
Jim@randomemail.com
您应该能够通过打印行(正如您已经拥有的那样)来判断分隔符是什么,但是将其包装在
repr
调用中——类似于print(repr(line))
。如果在输出中看到一个\t
,它是以制表符分隔的。下面是一些用纯python编写的代码,可以实现这一点:
for line in file_contents_2:
line_contents = line.strip().split(",") # Removes the \n,
# then turns the line into a list, where each value is seperated
# by the comma
the_dictionary = {}
reference = ["ORIN","DEST","HORIZ","BEAR"]
for i in range(4): # iterates i=0 to i=3
# Arrays start at 0, so a=[1,2,3]; a[1] would return 2
the_dictionary[reference[i]] = line_contents[i]
dictionary_list.append(the_dictionary)
使用熊猫会让你的生活更轻松:
import pandas as pd
df = pd.read_csv('path_to_your_csv')
your_dict = df.to_dict()
就是这样,在
中有一些可选的参数来帮助您按您想要的方式格式化它。您看到了吗?我认为分隔符是一个'\t'(制表符)而不是空格,但这是我的读数。@hd1这是可能的,我的编辑器会自动替换--我会添加其他的读者参数感谢回复,我已将此添加到我的代码中,但似乎什么也没有发生?我没有包含print语句。我写的代码旨在替换原始图片中的第26-38行
for line in file_contents_2:
line_contents = line.strip().split(",") # Removes the \n,
# then turns the line into a list, where each value is seperated
# by the comma
the_dictionary = {}
reference = ["ORIN","DEST","HORIZ","BEAR"]
for i in range(4): # iterates i=0 to i=3
# Arrays start at 0, so a=[1,2,3]; a[1] would return 2
the_dictionary[reference[i]] = line_contents[i]
dictionary_list.append(the_dictionary)
import pandas as pd
df = pd.read_csv('path_to_your_csv')
your_dict = df.to_dict()