Pythonが改行文字を奇妙に挿入する状況について誰かが知っているか知っていますか?
これは私のコードです
if ((sentAnalyze) and len(OpString)!=0):
if data[8]!= '':
if (data[8] == 'p'):
OpString = "1 " + OpString
elif (data[8] == 'n'):
OpString = "-1 " + OpString
elif (data[8] == 'neu'):
OpString = "0 " + OpString
print "writing :", OpString
fw.write(OpString + "\n")
印刷コマンドとファイル書き込みコマンドを見てみると、特定の行番号に対してファイルに余分な改行が挿入されています。
この全体のifブロックはwhileループにあり、printコマンドは行を正しく印刷します。
そして、ええ、私はw+
モードでファイルを開いています。
OpStringを計算する関数(部分的にここに記述されています)
for word,tag in simplified_tokens:
tok = word + "/" + tag
if tok in self.wordtoPosition:
OpString = OpString+ " " + str(self.wordtoPosition[tok]) + ":1" #+ str(1.0 / self.uniqPOSHash[tok])
return OpString
そして、データは次のようになります
1981:1 503:1 21:1 58:1 159:1 1:1 87:1 412:1 105:1 478:1 1154:1 1023:1 1192:1 53:1 37:1 36:1 598:1 19:1 4:1 162:1 14:1 131:1 2:1 489:1 411:1 3:1 165:1 370:1
-17:1 614:1 6:1 631:1 59:1 1:1 0:1 1183:1 10:1 22:1 15:1 67:1 55:1 3:1 175:1 9:1 43:1 866:1 48:1 30:1 0:1 484:1 2:1 1106:1 109:1
間に余分な改行があることに注意してください。特定の場所でのみ発生します。
repr(OpString)は
'1981:1 503:1 21:1 58:1 159:1 1:1 87:1 412:1 105:1 478:1 1154:1 1023:1 1192:1 53:1 37:1 36:1 598:1 19:1 4:1 162:1 14:1 131:1 2:1 489:1 411:1 3:1 165:1 370:1'
'-17:1 614:1 6:1 631:1 59:1 1:1 0:1 1183:1 10:1 22:1 15:1 67:1 55:1 3:1 175:1 9:1 43:1 866:1 48:1 30:1 0:1 484:1 2:1 1106:1 109:1'
ノート。「\n」を削除しても、特定の行のファイルに書き込んでいるときに1行が追加されます。それは変です
もう一つの興味深い観察。上記のアプローチでは、ファイルから読み取り、別のファイルに書き込みます。sO2つのファイルハンドルを開いています。ファイルの読み取りにはfr、ファイルの書き込みにはfw。frを開いて、OpString変数全体を作成し、frを閉じてから、fwを使用して書き込む場合、奇妙な新しい行は表示されません。とても興味深い!