2016-05-24 10 views
0

私はgedcomファイルの各行をそのレベル番号とタグで印刷するためのpythonプログラムを作成しました(gedcomは基本的にはファミリーツリーのファイルです)。gedcomファイルと印刷タグを読む

<level-number> <tag> <arguments> 

今、私はすべてのタグを印刷する必要はありませんが、私はkey_wordsリストに、私は「無効印刷したい残りの追加だけで特定のタグを次のようにGEDCOMから各行は構造を有していますタグ"。今、問題は、一致するタグが見つかって印刷されても、「無効なタグ」が毎回印刷されるということです。基本的に文が毎回実行される場合

この問題を解決するにはどうすればよいですか?また、それはここ

を印刷取得されていないとして、私は「INDIという言葉に対処することができますどのように私のコードは

key_words = ['INDI','NAME','SEX','BIRT','DEAT','FAMC','FAMS','FAM','MARR','HUSB','WIFE','CHIL','DIV','DATE','HEAD','TRLR','NOTE'] 
    #opening file 
    text_file = open('C:\Users\shree\Canopy\My-Family-18-May-2016-582.ged', 'r') 

    print "Printing each line of gedcom file followed by level no and tag line" 

    for line in text_file: 
     print "line is:-", line 
     level_number = int(line[:1]) 
     print "Level number is",level_number 
     line = line.split() 
     for word in key_words: 
      if word in line: 
       print "Tage is:-",word,"\n" 
     else: 
      print "invalid tag" 

サンプルライン

0 HEAD 
1 SOUR Family Echo 
2 WWW http://www.familyecho.com/ 
1 FILE My Family 
1 DATE 18 MAY 2016 
1 DEST ANSTFILE 
1 GEDC 
2 VERS 5.5.1 
2 FORM LINEAGE-LINKED 
1 SUBM @[email protected] 
2 NAME Nico Rosberg 
1 SUBN 
1 CHAR UTF-8 
0 @[email protected] INDI 
1 NAME Nico /Rosberg/ 
2 GIVN Nico 
2 SURN Rosberg 
2 _MARNM Rosberg 
1 SEX M 
1 BIRT 
2 DATE 21 MAR 1989 
1 FAMC @[email protected] 
0 @[email protected] INDI 
1 NAME Tom /Rosberg/ 
2 GIVN Tom 
2 SURN Rosberg 
2 _MARNM Rosberg 
1 SEX M 
1 BIRT 
2 DATE 15 MAR 1958 
1 FAMS @[email protected] 
1 FAMC @[email protected] 
0 @[email protected] INDI 
1 NAME Laisly /Vettle/ 
2 GIVN Laisly 
2 SURN Vettle 
2 _MARNM Rosberg 
1 SEX F 
1 BIRT 
2 DATE 15 SEP 1958 
1 FAMS @[email protected] 
1 FAMC @[email protected] 
+0

たとえば、ファイル自体からいくつかの行を追加してください。 – AKS

答えて

0

であるそれはあなたが望むものと思われるこのです:

line_words = line.split() 
# get the first element since that is the tag of line 
line_tag = line_words[1].strip() 

# check if that is present in the keywords 
if line_tag in key_words: 
    print "Tag is:-",line_tag,"\n" 
else: 
    print "invalid tag" 
+0

あなたのために働いていませんか? – AKS

関連する問題