2016-10-21 4 views
0

私は大部分の文字、数字、およびほとんどの通常の句読記号を保持するためにテキストを消去しようとしています。たとえば、私は時には "単語"や "単語"を持っているので、これらの複数の簡単な引用符を取り除きたいと思う。どこPythonでトリプルクォートとダブルシンプルクォートをフィルタリングする方法は?

res1=tqre.sub(self.quoteExtract,text) 
res2=dqre.sub(self.quoteExtract,res1) 

:次に

import re 
tqre=re.compile('\'\'\'[^\']*\'\'\'') #for triple quotes 
dqre=re.compile('\'\'[^\']*\'\'') #for "double" quotes 

各試合を取り除く: は、これまでのところ私は2つの正規表現を使用することを選択したことは、トリプル引用のためによく働くように見えます

def quoteExtract(self,match): 
    return match.group().strip("'") 

、しかし、私は多くの二重単純な引用符を通過している、彼らはキャッチされていないようだ。彼らは本当にシンプルな引用符ではなく、別の見た目の看板であるからですか?それらを扱う別の方法がありますか?

例:* ''Esquisse d'une grammaire comparée de l'arménien classique'', 1903.に正規表現が見つかりません。

+0

は、あなたが '」のような入力を持っているでしょう'こんにちは' '世界' 'foo' ''? – MooingRawr

+0

引用符の中に非 '文字だけが一致しているので、それをキャッチしていませんが、 'd'une'などには1つしかありません。 –

+2

私は何かが足りないかもしれませんが、二重引用符で囲まれていますか?このように: '' '' [^ '] *' '' "'? – cdarke

答えて

3

'(l'arménien)が二重引用符で囲まれていますが、[^']*と一致しようとしています。

正規表現のこの種のは、最高のlazy quantifierを使用して表現されています

tqre = re.compile("'''.*?'''") 
dqre = re.compile("''.*?''") 

ここ.*?は何も文字列が一致することを意味し、複数の一致がある場合、最短1を選択します。

  • . =改行以外の任意の文字、
  • * =ゼロ以上、
  • ?スター=非欲張りマッチの後
+0

*最小一致*とも呼ばれ、任意の量子に適用できます。 – cdarke

+0

偉大な、それはまさに私の問題を解決!問題を解決したものとしてタグ付けする方法はありますか? – KimAndGumi

+0

私は方法を見つけました。 – KimAndGumi

関連する問題