我有这个函数读取每行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
我不知道从哪里开始,我尝试拆分并再次加入,但没有雪茄,在这一点上欣赏任何输入。
谢谢!
答案 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]
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"')]
您也可以根据用户输入编写短例程以在目录中搜索。