句読点と記号を別のトークンとして分割するように、メインテキストから区切りたいと思います。私は次の記号%&()+,-./:;=–‘’“”″
を含むテキストファイルを持っていて、それぞれの記号を\ssymbol\s
(\s
はスペースを意味します)に置き換えたいと思います。 ..
がお互いに隣接している場合は、\s..\s
に置き換えます。私はテキストを印刷するとき部分文字列をスペース+部分文字列+スペースで置換するregex Python3.xを使用
>>> punc = "[%&\(\)\+,-./:;=–‘’“”″]+"
>>> import re
>>> pattern = re.compile(punc)
>>> text = "hi. hi.. hi; hi;; 55% good& good&&"
>>> text = re.sub(pattern, ' '+str(pattern)+' ', text)
が、私は以下の取得:これは私がこれまで試してみました何である
>>> print(text)
hi <_sre.SRE_Pattern object at 0x00000000035E14E0> hi <_sre.SRE_Pattern object at 0x00000000035E14E0> hi <_sre.SRE_Pattern object at 0x00000000035E14E0> hi <_sre.SRE_Pattern object at 0x00000000035E14E0> 55 <_sre.SRE_Pattern object at 0x00000000035E14E0> x <_sre.SRE_Pattern object at 0x00000000035E14E0>
しかし、私は、出力は次のようになりたい:
hi . hi .. hi ; hi ;; 55 % good & good &&
いくつかの試行の後、私は正しい正規表現をコンパイルできないことに気付きました。あなたの親切な助けが大変ありがとう!
ご協力いただきありがとうございます。あなたが適切に説明したように私の問題を解決するのはとても簡単だとは思わなかった。 Pythonのバージョンに関しては、3.3.2で実装しようとしていました。私は今3.4をインストールします。改善セクションに関しては、1つ以上の文字に対応したいと思います。同じタイプの3文字も1つのマッチとして扱う必要があります。これがあなたが実演したものです。ご協力いただきありがとうございます。 – Mohammed
しかし、 '.sub(r '\ l'、...)'の使い方を理解したいと思います。 – Mohammed
@モハメッドああ!はい、あなたのパターンで取り込まれた最初のグループを指しています!グループが複数ある場合は、3番目のグループを「3番目のグループ:\ 3」と呼ぶことができます。私の編集を参照してください。 –