2016-07-24 6 views
3

事前コンパイルして保存した正規表現のリストに自動補完を使用したいのですが、_sre.SRE_Patternクラスをインポートできないようで、取得した型をtype()からプログラムでフィードできません。 #type:classnameという形式のコメントに返すか、return - > classname形式のヒントに使用するPythonでコンパイルされた正規表現をタイプヒントすることは可能ですか?

明示的に_sre.cのものからクラスをインポートする方法はありますか?

+0

私は__Regexはこれを実現することができ、その名前に建てられたかもしれないと思います。 – KotoroShinoto

+0

https://docs.python.org/3/library/typing.html#typing.re – jonrsharpe

答えて

3

このユースケースに対応するために、タイピングモジュールに具体的に追加されたtyping.Pattern and typing.Matchを使用する必要があります。

例:

from typing import Pattern, Match 
import re 

my_pattern = re.compile("[abc]*") # type: Pattern[str] 
my_match = re.match(my_pattern, "abbcab") # type: Match[str] 
print(my_match) 
+0

を使用したことがありますか?pycharmは入力モジュールを完全に理解しているようには見えませんが、これはどのように表示されていますかうまくいくはずです。 – KotoroShinoto

+1

Pycharmは確かに、re.compileの型が_Regexであると不満を持ちます。(typing.Patternやtyping.Pattern [str]ではなく) –

+0

3.5では 'typing'が追加されているので、あなたのコードは実行時エラーを投げます3.4歳以上。 –

関連する問題