2016-06-21 1 views
0

私はいくつかの.txtファイルの文章を整列するために、曖昧さ(https://github.com/rsennrich/Bleualign)を使用しようとしています。このツールが動作する仕組みは、端末で次のようにコマンドを送信することです。種類Pythonでコマンドを送信するときのエラー

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

ファイルの名前は、自分が行っていることに固有のものです。ターミナルで直接使用すると動作します。私のpythonを通してそれをしようとすると

はしかし、

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) 

ときI:

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

私が取得:

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 

あなたは私が試した見ての通り文字列の前に 'u'を追加して文字列をUnicodeに変換します。私もunicode()を使用して、Uを使わずに、.decode()を試しました...

何が問題なのですか?

答えて

0

これはBleualignのバグです。 https://github.com/rsennrich/Bleualign/blob/master/bleualign/align.py#L187彼ら著者の現在の行にあります。

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

これは、最終的にはUnicode文字列でない文字列"srcfile"を渡し、ここ__init__https://github.com/rsennrich/Bleualign/blob/master/bleualign/align.py#L159

のオプションパラメータを取得します。したがって、結合関数は2つの非Unicode文字列を結合して、別の非Unicode文字列を作成します。io.StringIOはそれを拒否します。作者は、オプションパラメータをu"srcfile"に変更するだけです。

Githubページで問題を報告します。

+0

ありがとうございました!私はそれを行います。 –

関連する問題