我想解析家谱数据,目的是创建名称,日期和出现次数的字典(以确保没有重复的个别条目)。这是一个例子:
0 NOTE the lines until the next note are all correct
0 HEAD
0 jc INDI
1 NAME Jimmy /Connors/
1 SEX M
1 BIRT
2 DATE 1 JAN 1950
1 DEAT
2 DATE 31 DEC 2099
1 FAMC f1
1 FAMS f2
0 f2 FAM
1 HUSB jc
1 WIFE ce
1 CHIL aa
1 MARR
2 DATE 1 JUN 1960
1 DIV
2 DATE 1 JUN 1961
0 TRLR
0 NOTE Everything past this line is invalid
0 INDI id
0 FAM id
0 NAME invalid
0 SEX invalid
0 BIRT invalid
0 DEAT invalid
0 FAMC invalid
0 FAMS invalid
0 MARR invalid
0 HUSB invalid
0 WIFE invalid
0 CHIL invalid
0 DIV invalid
0 DATE invalid
1 INDI invalid
1 FAM invalid
1 HEAD
1 TRLR
1 DATE
1 NOTE bad note
1 DATE 1 JUN 2017
2 INDI id
2 FAM id
2 NAME invalid
2 SEX invalid
2 BIRT invalid
2 DEAT invalid
2 FAMC invalid
2 FAMS invalid
2 MARR invalid
2 HUSB invalid
2 WIFE invalid
2 CHIL invalid
2 DIV invalid
1 INVALID invalid
3 INVALID invalid
4 NOTE invalid
到目前为止,这是我的代码(不完整,因为我卡住了):
'''
No more than one individual with the same name and birth date
should appear in a GEDCOM file
'''
file_name = input("Give me a file name to parse (in single quotes): ")
target1 = 'NAME'
target2 = 'BIRT'
name = ''
count = 0
person_dict = {}
try:
file = open(file_name)
except IOError:
raise IOError("Can't open '{}'".format(file_name))
for index, line in enumerate(file):
word = line.strip().split()
if target1 in word:
name = word[index-1:]
arguments = " ".join(word[index-1:])
person_dict[name] = arguments
print(person_dict)
elif target2 in word:
birth = word[index-1:index+3]
clean_bdate = " ".join(word[index-1:index+3])
person_dict[date] = clean_bdate
print(birth)
else:
print('not name')
'''
if duplicates are found...
print("{} already exists. Removing duplicate entry.".format(arguments))
'''
我一直在
文件“user_story_1.py”,第24行,中 person_dict [name] =参数TypeError:不可用类型:'list'
我尝试了很多东西,包括让我的列表成为一个元组,但似乎没有任何工作。抱歉,如果这看起来像一个基本问题,我是编程的新手,我已经被困了一段时间!