2017-02-12 4 views
1

私はすべてのパターンを抽出し、次のプログラムを書きました(可能ハイフン付きの単語、句読点)抽出言葉

sentence="Narrow-minded people are happy although it's cold ! I'm also happy" 
print(re.split('([^-\w])',sentence)) 

結果は次のとおりです。

['Narrow-minded', ' ', 'people', ' ', 'are', ' ', 'happy', ' ', 'although', ' ', 'it', "'", 's', ' ', 'cold', ' ', '', '!', '', ' ', 'I', "'", 'm', ' ', 'also', ' ', 'happy'] 

質問です単語の終わりにアポストロフィを考慮する(追加する)方法。たとえば、の代わりに"it'"を検索したいとします。

答えて

2

あなたは特別なケースとして、アポストロフィで終わる言葉を追加することができます

print(re.split('([\w-]+\'|[^-\w])',sentence)) 

この場合は、文はどちらか

  • 続く一つ以上\w -charactersの配列に分割され、アポストロフィ([\w-]+\'部分
  • またはダッシュではない任意の文字または[^-\w]部分)

これは、その結果:これはあなたがリストをフィルタリングすることができ、それらを取り除くために、リスト内の空の文字列('')の数を増加させないこと

['Narrow-minded', ' ', 'people', ' ', 'are', ' ', 'happy', ' ', 'although', ' ', '', "it'", 's', ' ', 'cold', ' ', '', '!', '', ' ', '', "I'", 'm', ' ', 'also', ' ', 'happy'] 

注:

print(filter(None, re.split('([\w-]+\'|[^-\w])',sentence))) 
その結果

:Suprinsgly小さなミスが単語「の後、そこにある

['Narrow-minded', ' ', 'people', ' ', 'are', ' ', 'happy', ' ', 'although', ' ', "it'", 's', ' ', 'cold', ' ', '!', ' ', "I'", 'm', ' ', 'also', ' ', 'happy'] 
+0

althou gh ''と ''だけではなく ''があります。 – Hana

+1

@ハナ詳細を提供するために答えを更新しました。元の出力に感嘆符の周りに空の文字列( '' '')が既に含まれていたことを考えれば、それ以上は持っているのは問題ではないと思った。 – ebo

+0

例外を入れるために式を改善するにはどうすればよいですか?(再適用したくない2つの特別な単語(O'Neillなど) – Hana