実行中のテキストから単語を抽出するコードを書いています。このテキストには、テキストに含まれる可能性のある\ r、\nなどの区切り文字を含めることができます。
これらの区切り文字をすべて破棄し、完全な単語のみを抽出したいと思います。Pythonでこれを行うにはどうすればよいですか?Pythonでテキストをクランチするために利用できるライブラリはありますか?
実行中のテキストから単語を抽出するコードを書いています。このテキストには、テキストに含まれる可能性のある\ r、\nなどの区切り文字を含めることができます。
これらの区切り文字をすべて破棄し、完全な単語のみを抽出したいと思います。Pythonでこれを行うにはどうすればよいですか?Pythonでテキストをクランチするために利用できるライブラリはありますか?
re
「単語」の定義が正規表現モジュール( )の定義、つまり文字、数字、アンダースコアと一致すると仮定すると、簡単です。
import re
fullwords = re.findall(r'\w+', thetext)
問題の文字列はどこthetext
にありますか(たとえば、テキストを取得する場所である場合は、読み取り用に開いてf.read()
いるファイルオブジェクトからのものです)。f
単語を別の方法で定義する場合(たとえば、アポストロフィを含める場合、たとえば「it's」は「1つの単語」と見なされます)、それほど難しくはありませんfindall
。適切なパターンの最初の引数として使用するだけです。たとえばr"[\w']+"
、アポストロフィの場合です。場合。
非常に高度なものにする必要がある場合(たとえば、単語間の区切りを使用しない言語を扱う場合)、問題は突然さらに難しくなり、nltkなどのサードパーティパッケージが必要になります。
区切り文字が空白文字(スペース、\r
など\n
)であるとすると、basicstr.split()
は必要な処理を実行します。
>>> "asdf\nfoo\r\nbar too\tbaz".split()
['asdf', 'foo', 'bar', 'too', 'baz']