2016-06-21 6 views
0

Ich versuche, bleualign (https://github.com/rsennrich/Bleualign), um die Sätze einiger TXT-Dateien auszurichten. Die Art und Weise dieses Tool funktioniert, ist ein Befehl im Terminal in der folgenden Art und Weise zu senden:Geben Sie Fehler beim Senden von Befehl über Python

python ../../Bleualign/bleualign.py -s circle_en-us_pre_aligned.txt -t circle_pt-br_pre_aligned.txt --srctotarget - -o output 

Die Namen der Dateien sind spezifisch auf das, was ich tue. Dies funktioniert, wenn ich es direkt am Terminal verwende.

Allerdings, wenn ich versuche, es durch Python zu tun,

def align_sentences(folder_name, src_lang, trgt_lang): 

    string = u"python ../../Bleualign/bleualign.py -s "+\ 
     folder_name+u"_"+src_lang+u"_pre_align.txt "+\ 
     u"-t "+folder_name+u"_"+trgt_lang+u"_pre_align.txt "+\ 
     u"--srctotarget -"+\ 
     u" -o outputfile" 


    os.system(string) 

Als ich:

align_sentences(u"circle",u"en-us",u"pt-br") 

ich:

Traceback (most recent call last): 


File "../../Bleualign/bleualign.py", line 14, in <module> 
    a = Aligner(options) 



File "/home/goncalo/Bleualign/bleualign/align.py", line 159, in __init__ 
    self._inputObjectFromParameter(self.options['srcfile']) 
    File "/home/goncalo/Bleualign/bleualign/align.py", line 198, in _inputObjectFromParameter 
    inputObject = self._stringArray2stringIo(parameter) 
    File "/home/goncalo/Bleualign/bleualign/align.py", line 187, in _stringArray2stringIo 
    return io.StringIO('\n'.join([line.rstrip() for line in stringArray])) 
TypeError: initial_value must be unicode or None, not str 

Wie Sie sehen, ich habe versucht, wandle den String in Unicode um, indem du 'u' vor den Strings hinzufügst. Ich habe es auch ohne die u, mit Unicode(), versucht .decode() ...

Was ist los?

Antwort

0

Dies scheint ein Fehler in Bleualign zu sein. Auf der aktuellen Zeile von https://github.com/rsennrich/Bleualign/blob/master/bleualign/align.py#L187 sie Autoren haben:

return io.StringIO('\n'.join([line.rstrip() for line in stringArray])) 

Dies wird schließlich die Optionen Parameter in __init__ hier https://github.com/rsennrich/Bleualign/blob/master/bleualign/align.py#L159

die einen String "srcfile" gibt, die keine Unicode-String ist. Die Join-Funktion kombiniert also zwei Nicht-Unicode-Strings zu einer anderen Nicht-Unicode-Zeichenfolge, die io.StringIO ablehnt. Die Autoren müssen wahrscheinlich nur den Optionsparameter auf u"srcfile" ändern.

Ich würde ein Problem auf ihrer Github-Seite einreichen.

+0

Vielen Dank für Ihre Antwort! Ich werde das machen. –