現在、Python v2.6 を使用しており、単語を 1 行にマージしようとしています。私のコードは、テキスト ファイルからデータを読み取ることになっており、その中には 2 行のデータがあり、どちらも文字列です。次に、次のように区切り文字列で区切られた文の単語である 2 行目のデータを毎回取得します。
.txt 内:
"delimiter_string"
"row_1_data" "row_2_data"
"row_1_data" "row_2_data"
"row_1_data" "row_2_data"
"row_1_data" "row_2_data"
"row_1_data" "row_2_data"
"delimiter_string"
"row_1_data" "row_2_data"
"row_1_data" "row_2_data"
...
これらの「row_2_data」は、後で文に追加されます。長い紹介で申し訳ありません。
これが私のコードです:
import sys
import re
newLine = ''
for line in sys.stdin:
word = line.split(' ')[1]
if word == '<S>+BSTag':
continue
elif word == '</S>+ESTag':
print newLine
newLine = ''
continue
else:
w = re.sub('\[.*?]', '', word)
if newLine == '':
newLine += w
else:
newLine += ' ' + w
"BSTag" は "Sentence Begins" のタグで、"ESTag" は "Sentence Ends" のタグです。いわゆる "delimiters" です。「re.sub」は特殊な用途に使用されており、確認した限りでは動作します。
問題は、次のコマンドを使用して Linux のコマンド ラインからこの python スクリプトを実行すると、次のようになることです。スクリプト.py | 出力が表示されず、空のファイルだけが表示されます。
Linux に慣れていない方は、端末の実行とは関係ない問題だと思いますので、その部分は無視してかまいません。単純に、コードが意図したとおりに機能せず、間違いが 1 つも見つかりません。
長い投稿を読んでくれてありがとう:)
OK、問題は解決しました。これは実際にはコーディング エラーではなくコーパス エラーでした。テキスト ファイルで非常に奇妙なエントリが検出され、問題が発生していました。それを削除すると解決しました。同様のテキスト処理が必要な場合は、私のアプローチと「snurre」によって提示されたアプローチの両方を使用できます。
乾杯。