我一直在尝试通过re.search访问Match Object的可用功能。我正在寻找一种类似于dir(str)的方法,并且可以找到.replace。
这是我的re()模块的dir()以及我尝试过的一些方法:
std::string
我想进入此菜单而不必创建匹配对象:
>>> import re
>>> m = re.search('x', 'x')
>>> dir(re)
['DEBUG', 'DOTALL', 'I', 'IGNORECASE', 'L', 'LOCALE', 'M', 'MULTILINE',
'S', 'Scanner', 'T', 'TEMPLATE', 'U', 'UNICODE', 'VERBOSE', 'X',
'_MAXCACHE', '__all__', '__builtins__', '__doc__', '__file__', '__name__',
'__package__', '__version__', '_alphanum', '_cache', '_cache_repl',
'_compile', '_compile_repl', '_expand', '_locale', '_pattern_type',
'_pickle', '_subx', 'compile', 'copy_reg', 'error', 'escape', 'findall',
'finditer', 'match', 'purge', 'search', 'split', 'sre_compile',
'sre_parse', 'sub', 'subn', 'sys', 'template']
是否有办法从dir(m)出发,并且能够找出如何提高水平?这样,我可以追溯到模块和功能。就像我要执行dir(re.search.func_dict)一样,如何找到需要输入dir()的内容以获取包含func_dict()的列表?
>>> dir(m)
['__class__', '__copy__', '__deepcopy__', '__delattr__', '__doc__',
'__format__', '__getattribute__', '__hash__', '__init__', '__new__',
'__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__',
'__str__', '__subclasshook__', 'end', 'endpos', 'expand', 'group',
'groupdict', 'groups', 'lastgroup', 'lastindex', 'pos', 're', 'regs',
'span', 'start', 'string']
我看到了有关_sre.SRE._Match的内容,但是我如何找到它的住处,以便获得更多有关它的信息?
>>> dir(re.Match)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'Match'
我尝试使用inspect函数,但是唯一提供给我任何信息的函数是inspect.getmembers(re),但这只是很多我不理解的东西。
我是一名完全的新手,学习了您的编程课程,并且除了我编写的某些程序之外,我没有Python的基础知识。我一直在尝试使用dir()和help()进行大量学习。非常感谢您的帮助。
答案 0 :(得分:0)
这是到目前为止我得到的最接近的东西:
>>> import re, inspect
>>> inspect.getmembers(re,inspect.isclass)
[('Scanner', <class re.Scanner at 0xb7b7bcec>), ('_pattern_type', <type
'_sre.SRE_Pattern'>), ('error', <class 'sre_constants.error'>)]
>>> from re import _pattern_type
>>> dir(_pattern_type)
['__class__', '__copy__', '__deepcopy__', '__delattr__', '__doc__', '__format__',
'__getattribute__', '__hash__', '__init__', '__new__', '__reduce__', '__reduce_ex__',
'__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'findall',
'finditer', 'flags', 'groupindex', 'groups', 'match', 'pattern', 'scanner', 'search',
'split', 'sub', 'subn']
答案 1 :(得分:0)
显然_sre是C扩展名,因此SRE_Match在此C文件中定义了
答案 2 :(得分:0)
在Python 3.7中,re.Match
是re.match
返回的对象的类型。参见bpo30397。
在以前的版本中,未定义re.Match
。如果要引用匹配对象的类型,可以使用
Match = type(re.match('',''))
您可以在dir
类型或匹配对象上使用Match
来列出其属性和方法。