2013-08-25 13 views
9

開始の末尾にの句読点を取り除くには、正規表現を使用する必要があります。正規表現がこのための最良の選択肢になるようです。私はあなたのような言葉から句読点を削除したくないので、私は.replace()を使用していません。ありがとうございます=)regex - pythonでストリップの句読点

+0

のUnicode文字の英数字と他のすべてを区別する方法を探してここに来る人のために、Pythonの3.xを使用している間、あなたは自分の正規表現の中のwと\ W \使用することができます。これはちょうどTkinterのテキストウィジェットのControl-Shift-Left/Right機能をコーディングするのに役立ちました(言葉の前に句読点のようなものをすべてスキップするため)。私はその解決策を見つける前にあなたの記事を見つけました。だから、私はそれが似たようなボートで誰かを助けるかもしれないと思います。 – Shule

答えて

32

このタスクを実行するために正規表現は必要ありません。 string.punctuationstr.stripを使用します。

>>> import string 
>>> string.punctuation 
'!"#$%&\'()*+,-./:;<=>[email protected][\\]^_`{|}~' 
>>> '!Hello.'.strip(string.punctuation) 
'Hello' 

>>> ' '.join(word.strip(string.punctuation) for word in "Hello, world. I'm a boy, you're a girl.".split()) 
"Hello world I'm a boy you're a girl" 
+1

ちょうど好奇心から、これのための正規表現の方法は何ですか? –

+0

're.sub '' \ S + '、λm:re.sub' '\\ W + | \ W + $'、 '、m.group())、' ... ')'。注: '\ W'は、' _'を(句読点の文字として扱う場合は) '_ 'を除外するため、置き換える必要があります。デモ:http://ideone.com/Ti44Bw – falsetru

+0

素晴らしい!どうもありがとう! ところで、これはあなたと同じですか? 're.sub( '\ S +'、λ:re.match(r '^ \ W *(。* \ w)\ W * $'、m.group ))。グループ(1)、テキスト) '? 「はい」の場合、どちらの方が高速ですか(それ以外の方が良いでしょうか)。 [デモ](http://ideone.com/EDan4X) –

関連する問題