2017-11-12 2 views
0

もともと私はファイルを読み込み、コードをperlのためにそれを提供することができますのpython 2.7のコード、持っている:今、私はむしろよりのpython3コードに変換するように、しかし、のpython3 proc.communicateにバイトのようなオブジェクトを読み込みます文字列をバイトに変換する方法はありますが、改行はPython3で保持していますか?

proc = subprocess.Popen(["perl", _conlleval], stdin=subprocess.PIPE, stdout=subprocess.PIPE) 
stdout, _ = proc.communicate(open(filename).read()) 

を'str'だから私はstdout, _ = proc.communicate(open(filename).read().encode())を使用していますが、\nに変換するファイルになることは、すべての行がでフィードことが判明し、例えば、ファイルに私が

Apple 
Tree 

Is 
Good 

を持っている。しかし、残念ながらエンコードがそれを行います:

Apple\nTree\n\nIs\nGood\n 

このエラーを修正するにはどうすればよいですか? \n

+0

あなたはそれが* *送信するために何をしたいですか?改行を何に変換したいですか? – wwii

+0

あなたは '' open'の '' newline'パラメータ(https://docs.python.org/3/library/functions.html#open)を使いこなしてみましたか?バイナリモードでファイルを開いてそのように送信しようとしましたか?それらの改行文字はファイル内にあるので、それらを削除/フィルタリングする必要があります。もっと良いのは、あなたのperlスクリプトをPythonに変換してやることです。 – wwii

答えて

0

を使用してください。repr:オブジェクトの印刷可能な表現を含む文字列を返します。

stri='''Apple 
Tree 

Is 
Good 
''' 
print(stri) 
print(repr(stri)) 

出力:

Apple 
Tree 

Is 
Good 

'Apple\nTree\n\nIs \nGood\n' 
+0

reprはそのタイプを変更しません。これはまだ文字列です – user8142520

+0

文字列に対してどのような操作をしたいですか?新しい行を削除しますか? – brokenfoot

関連する問題