我希望解析家谱数据,目的是创建一个名称、日期和出现次数的字典(以确保没有重复的单个条目)。以下是一个例子: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))
'''
我一直文件“用户”_故事_1.py“,第24行,亲自_迪克特名字,姓名=参数类型错误:不可引用的类型:‘list’
我尝试过很多事情,包括把我的列表变成元组,但似乎没有什么效果。很抱歉,如果这似乎是一个基本的问题,我对编程还不熟悉,我已经被困了一段时间了!