77from udapi .core .block import Block
88
99
10- node_attributes = ["ord" , "form" , "lemma" , "upostag" , "xpostag" , "feats" , "head" , "deprel" , "deps" , "misc" ]
11-
12-
1310class Conllu (Block ):
1411 """
1512 A writer of the Conll-u files.
@@ -19,6 +16,12 @@ def __init__(self, args=None):
1916 if args is None :
2017 args = {}
2118
19+ super (Block , self ).__init__ ()
20+
21+ # A list of Conllu columns.
22+ self .node_attributes = ["ord" , "form" , "lemma" , "upostag" , "xpostag" ,
23+ "raw_feats" , "head" , "deprel" , "raw_deps" , "misc" ]
24+
2225 # File handler
2326 self .filename = None
2427 self .file_handler = None
@@ -28,7 +31,7 @@ def __init__(self, args=None):
2831 elif 'filename' in args :
2932 self .filename = args ['filename' ]
3033 logging .debug ('Opening file %s' , self .filename )
31- self .file_handler = open (self .filename , 'r ' )
34+ self .file_handler = open (self .filename , 'wb ' )
3235 else :
3336 logging .warning ('No filename specified, using STDOUT.' )
3437 self .file_handler = sys .stdout
@@ -69,22 +72,23 @@ def process_document(self, document):
6972
7073 # Nodes.
7174 for node in root .descendants ():
72- values = [getattr (node , node_attribute ) for node_attribute in node_attributes ]
75+ values = [getattr (node , node_attribute ) for node_attribute in self . node_attributes ]
7376 values [0 ] = str (values [0 ])
7477
7578 try :
7679 values [6 ] = str (node .parent .ord )
7780 except :
7881 values [6 ] = '0'
7982
80- for index in range (0 ,len (values )):
81- if values [index ] == None :
83+ for index in range (0 , len (values )):
84+ if values [index ] is None :
8285 values [index ] = ''
8386
8487 self .file_handler .write ('\t ' .join ([value for value in values ]))
8588 self .file_handler .write ('\n ' )
8689
87- self .file_handler .write ("\n " )
90+ if number_of_written_bundles != len (document .bundles ) - 1 :
91+ self .file_handler .write ('\n ' )
8892
8993 number_of_written_bundles += 1
9094
0 commit comments