2017-02-08 7 views
1

私はPython 3.6.0を使ってメーターの出力をxlsxファイルに変換するスクリプトを作成しています。入力ファイルの最後には、ファイルの終わりを示す→の記号があります。Pythonの検出→シンボル

→シンボルを検出すると、現在の行をスキップしたいとします。複数のファイルを変換して元のファイルの終わりを示す複数の記号を付けることができます。

メモ帳++では、形式が UTF-8 ANSIと検出されますが、矢印を検出するためにPythonコードのif文を取得します。 →それはまた、普通の古いメモ帳にも明らかです。右矢印を検出できない

elif '\u+2192' in line: 

私の最も最近の反復は、この試みでした。

elif '→' in line: 

この1文字はどのように検出できますか?

EDIT:私が読み込んでいるファイルは.logファイルです。

EDIT:トラブルシューティングに役立つその他のコード/データ。ここで

は私のログファイルの末尾の抜粋です:

TIM= 15:24:47 
TODAY -0.0687869 m3 
→ 

***注:私はコピーして、メモ帳からテキストをペーストすると、それは矢印を貼り付けられません。ここで

は、私は、ファイルのラインを介して読んでいるかである:

with open(datafile, 'r') as df: 
    for line in df: 
+0

私のために働きます: '' line→line''の ''→'は'を返します。どのようにしてそれはあなたのために「失敗」しますか? – yedpodtrzitko

+0

ええと、私にとっては、行は決して真とは決して評価されません。その場合はスキップします。 – Ramrod

+2

Pythonバージョン? –

答えて

1

Code Page 437に示されているように、右矢印は実際にはコントロールZです。 Control-Zは、多くのWindowsプログラムでは歴史的な理由から、テキストファイルのファイル終わりのマーカーとして受け入れられています。あなたが文字\x1aを探すなら、それを見つけるでしょう。

ファイルをテキストモードで開くと、自動的にその文字が削除されます。

+0

それは次のようにして問題を解決しました: '' x1a 'in line: ' – Ramrod

1

それは'\u2192'ない'\u+2192'です。また、正しいエンコーディングを指定することを忘れないでください。

あなたはまた、例えば'\N{RIGHTWARDS ARROW}'ため、\x\U、または\Nを使用することができます。

PEP8によると:標準ライブラリで

、デフォルト以外のエンコーディングは テスト目的のためにのみ使用したりする必要があるコメントやドキュメント文字列は、非ASCII文字が含まれている 著者名に言及する必要がある場合;それ以外の場合は、\ x、 \ u、\ U、\ Nエスケープを使用して、ASCII以外のデータ を文字列リテラルに含めることをお勧めします。