2017-11-30 21 views
0

現在、特定の単語がページに何回表示されているか調べています。時Pythonの文字列から印刷できない文字を取り除く?

プリント(LEN(re.findall(secondAnswer、ページ)))

私のPythonのコードは、これを持っています慎重な分析、私は気づいた 印刷(secondAnsw ER)私がlenの私secondAnswer値(re.findall(secondAnswer、ページ感情を持っている '太平洋の\ ufb01c')私に

を印刷異なる答え、 "太平洋"

(アスキー(secondAnswer)を与えています))は、代わりに 'Paci \ ufb01c'を使用しているため、ページに一致するものは見つかりません。

誰かが私にこれを解決するためのヒントを教えてもらえますか?

おかげで、ニック

答えて

3

Unicode文字fb01fi ligatureです。つまり、これはPythonに関する限り単一の文字ですが、表示されるときに2つの(つながれた)文字として表示されます。

リガチャーをそれぞれの文字に分解するには、unicodedata.normalizeを使用できます。たとえば:paci(?:fi|fi)c

page = unicodedata.normalize("NFKD", page) 

またはこの特定のケースでは、あなたは非キャプチャグループとの交代を使用することにより、たとえば、fi文字列の代替としての合字を受け入れるように正規表現を書くことができます。

+0

私は "文字のシーケンスの代用として合字を受け入れるための"正規表現を書く方法であなたが意味することを詳しく説明できますか?申し訳ありませんが、私はプログラミングにかなり新しいです。 –

+0

私の答えにそれを加えました。 – kindall

+0

ありがとうございます。そこで非捕捉グループはどこに置くのですか?スクリプトでPyCharmを使用しています。 –

関連する問題