2013-07-18 47 views
1

.txt文件的字典。如果给你一个.txt file其中包含这些内容:创建从使用Python

James Doe 2/16/96 IT210 A BUS222 B PHY100 C 
John Gates 4/17/95 IT101 C MATH112 B CHEM123 A 
Butch Thomas 1/28/95 CS100 C MATH115 C CHEM123 B 

你怎么能得到它,所以它需要的类名和成绩,并将它们放入一个空字典,而忽略其余?我的代码设置为读取.txt file但卡住了。有什么建议么?

这是我打开文件代码:

def readFile(): 
    new_dict = {} 
    myFile = open('Students.txt', 'r') 
    for line in myFile: 
+0

你能不能给我们的解释是什么样子在这种情况下的例子吗? –

+0

该文件中的类名和等级是什么? –

+0

Dict = {'IT210':'A','BUS222':'B','PHY100':'C'} – miloJ

回答

0
li = [] 
with open("file.txt", 'r') as f: 
    line = f.readline().split() 
    while line: 
     dict = {} 
     dict[line[-6]] = line[-5] 
     dict[line[-4]] = line[-3] 
     dict[line[-2]] = line[-1] 
     li.append(dict) 
     line = f.readline().split() 

li = [{'IT210': 'A', 'PHY100': 'C', 'BUS222': 'B'}, {'IT101': 'C', 'MATH112': 'B', 'CHEM123': 'A'}, {'CS100': 'C', 'CHEM123': 'B', 'MATH115': 'C'}] 
2

而是为每个学生制作不同的变量,为什么不使用词典列表?

请参见下面的代码:

>>> dictList = [] 
>>> with open('Students.txt', 'r') as f: 
     for line in f: 
      elements = line.rstrip().split(" ")[3:] 
      dictList.append(dict(zip(elements[::2], elements[1::2])))  
>>> dictList 
[{'IT210': 'A', 'PHY100': 'C', 'BUS222': 'B'}, {'IT101': 'C', 'MATH112': 'B', 'CHEM123': 'A'}, {'CS100': 'C', 'CHEM123': 'B', 'MATH115': 'C'}] 

如果您正在寻找在字典中的txt文件给定,再看看为OrderedDict维持秩序。

0

下面的代码做你想要的。

import re 

student = 'James Doe 2/16/96 IT210 A BUS222 B PHY100 C' 
pattern = '([0-9]{1,2}/[0-9]{1,2}/[0-9]{1,2})' 
end = re.search(pattern, student).end() 
found = student[end+2:] 
x = found.split(' ') 
numberOfEntries = len(x)/2 
i = 0 
Dict = {} 

while i < numberOfEntries: 
    Dict[x[i]] = x[i+1] 
    i = i + 1 

print Dict 
0
dic={} 
for line in myFile: 
    info=line.split(' ') 
    firstname=info[0] 
    lastname=info[1] 
    firstClass=info[3] 
    firstgrade=info[4] 
    secondClass=info[5] 
    secondgrade=info[6] 
    thirdClass=info[7] 
    thirdGrade=info[8] 
    gradeInfo={firstClass:firstgrade,secondClass:secondgrade,thirdClass:thirdgrade} 
    name='%s %s' %(firstname,lastname) 
    dic+={name,gradeInfo} 
0
student_dict = {} 
for line in open('input','r'): 
    line2=line.split() 
    name = ' '.join(line2[0:2]) 
    grades = line2[3:] 
    grades_dict = {grades[i]:grades[i+1] for i in xrange(0,len(grades),2)} 
    student_dict[name]=grades_dict 

给出:

>>> student_dict 
{'James Doe': {'IT210': 'A', 'PHY100': 'C', 'BUS222': 'B'}, 'Butch Thomas': {'CS100': 'C', 'CHEM123': 'B', 'MATH115': 'C'}, 'John Gates': {'IT101': 'C', 'MATH112': 'B', 'CHEM123': 'A'}} 
0

豆:

def readFile(): 
    new_dict = {} 
    myFile = open('Students.txt', 'r') 
    for line in myFile: 
     line2=line.split() 
     class1=line2[3] 
     gra=line2[4] 
     new_dict[class1]=gra