将文件读入字典

时间:2014-10-21 02:34:54

标签: python file python-2.7 dictionary

我有这个函数读取每行6行4列的文件,行可以如下所示:

SCV-A.ST,12,118.20,"10/1/2012"

我要做的是将读取文件保存到字典中,其中第一列(在本例中为“SCV-A.ST”)是键和字符串。该行的其余部分是一个列表,其中第二列是整数,第三列是浮点数,最后一列是字符串。

我读取文件的功能如下所示

def read_file(filename):
        f = open(filename, 'r')
        s = f.read()
        return s

我不知道从哪里开始,我尝试拆分并再次加入,但没有雪茄,在这一点上欣赏任何输入。

谢谢!

2 个答案:

答案 0 :(得分:1)

我会使用csv包:

import csv

f = open('/path/to/file','rb')

reader = csv.reader(f)

newDict = {}
for row in reader:
    newDict[str(row[0])]=[row[1],row[2],row[3]]

print(newDict)

这将使您提供的行产生以下内容:

{'SCV-A.ST': ['12', '118.20', '10/1/2012']}

将转换行[1]转换为使用int()的行整数,使用float()将行[2]转换为浮点数,使用datetime包将行[3]转换为日期对象也可能是有价值的

答案 1 :(得分:0)

我认为以下代码可以满足您的要求

try:
    in_file = raw_input("Enter a file name:")
    myfile = open(in_file)
except :
    print "Couldn't open the file"
    exit()

d = dict()
for line in myfile :
    line = line.strip()
    elements = line.split(",")
    d[str(elements[0])] = [(int(elements[1]),float(elements[2]), str(elements[3]))]

for key in d :
        print key, d[key]

输入文件:myfile.txt

SCV-A.ST,12,118.20,"10/1/2012"
SCV-B.ST,13,119.20,"10/1/2013"
SCV-C.ST,14,120.20,"10/1/2014"
SCV-D.ST,15,121.20,"10/1/2015"
SCV-E.ST,16,122.20,"10/1/2016"

程序输出:

输入文件名:myfile.txt

SCV-A.ST [(12, 118.2, '"10/1/2012"')]
SCV-C.ST [(14, 120.2, '"10/1/2014"')]
SCV-B.ST [(13, 119.2, '"10/1/2013"')]
SCV-E.ST [(16, 122.2, '"10/1/2016"')]
SCV-D.ST [(15, 121.2, '"10/1/2015"')]

您也可以根据用户输入编写短例程以在目录中搜索。