2016-10-14 4 views
1

句読点を削除するにはどうすればよいですか? ??例については単語内の句読点を保持する

Input = "Hello!!!, i don't like to 'some String' .... isn't" 
Output = (['hello','i', 'don't','like','to', 'some', 'string', 'isn't']) 

私はこれを行うにしようとしています:

re.sub('\W+', ' ', myLine.lower()).split() 

しかし、これはドンに "はないを行う" などの単語を分割していますおよびt

+0

\ Wの代わりにスペース '+'または '+スペースを検索します。 – JulienD

+0

@JulienD:素早く返信してくれてありがとう!!私はPythonとRegExの新機能を搭載しています!!あなたは何を意味するのか分かりませんでした!! "re.sub( '+'、 ' 、myLine.lower())。split()) " –

+0

句読点を分割して取り除きます –

答えて

1

あなたの正規表現で前後参照を使用することができます。

>>> input = "Hello!!!, i didn''''t don't like to 'some String' .... isn't" 
>>> regex = r'\W+(?!\S*[a-z])|(?<!\S)\W+' 
>>> print re.sub(regex, '', input, 0, re.IGNORECASE).split() 
['Hello', 'i', "didn''''t", "don't", 'like', 'to', 'some', 'String', "isn't"] 

RegEx Demo

\W+(?!\S*[a-z])|(?<!\S)\W+は、前の位置にある文字または次の文字を持たない非単語、非空白文字にマッチします1つ以上の非空白文字の後の位置。

+1

は魅力的な働きをしました!ありがとうございました!これが最善の方法ですか、それとも最適な方法がありますか? ?(PS:ちょうどもっと学びたい、提案された方法に何も問題はありません) –

+0

正規表現を使ってそれを行うための唯一の可能な方法だと思います。 – anubhava

+1

素晴らしい!ありがとうたくさんの! –

関連する問題