1
grepを使用してユニコード文字列を検索するにはどうすればよいですか?ユニコード文字をgrepするには?
文字列「\ xfe \ n \ xfe」の出現回数を数えようとしています。私は以下のようにしてPythonでこれを見つけることができます:
open(filename).read().count('\xfe\n\xfe')
これは数千の一致を見つけます。
しかし、これによりファイル全体がメモリにロードされるため、システムのメモリよりも大きなファイルを検索しようとするとクラッシュします。
だから私は経由でのgrepと同等のものをやろうとしている:
grep -P -c "\xfe\n\xfe" filename
それは素晴らしいですが、ほぼ0のメモリを消費するが、私は同じファイルでこれを実行するにもかかわらず、それが0の一致が見つかりました。私の構文が間違っていますか?
'grep'は行ベースで動作します。 –
ファイル全体をPythonのメモリに読み込む必要はありません。あるいは、あなたのファイルと同じエンコーディングを使用している(少なくとも、うまくいけば)エスケープしないで文字を貼り付けることができます。つまり 'grepþ'が動作します。 – pvg
私は160000行(40000件の一致を含む)のファイルをテストしました。この場合、Pythonはgrepに対してずっと高速になります。 @モーゼスKoledoyeのソリューションは正常に動作するはずです – RomanPerekhrest