Python中的正则表达式 - AttributeError:'NoneType'对象没有属性'group'

时间:2017-11-06 22:31:33

标签: python regex

我试图打印出以first开头的文件名。

这就是我所做的:

导入操作系统 导入重新

path = '/my_path'
for root, dirs, files in os.walk(path):
    for file in files:
        match_pattern = re.search(r'^first', file)
        print match_pattern.group()

但是,这是我在运行程序时得到的:

first
Traceback (most recent call last):
  File "test.py", line 10, in <module>
    print match_pattern.group()
AttributeError: 'NoneType' object has no attribute 'group'

我想打印出以first开头的文件名,例如:

first-xyz
first abc

我做错了什么?

3 个答案:

答案 0 :(得分:2)

如果RegEx不匹配,则返回None,因此您需要像这样修复:

match_pattern = re.search(r'^first', file)
if match_pattern:
    print match_pattern.group()

另请注意,在Python 2中,file是内置函数(别名为open),您不应重新定义。

答案 1 :(得分:1)

您的搜索返回无。试试这个:

path = '/my_path'
for file in os.listdir(path):
    if file.startswith("first"):
        print file + '\n'

答案 2 :(得分:0)

如果没有匹配(see python.org documentation for re.search() here),Python的正则表达式方法re.search()re.match()都会返回None。在尝试使用match_pattern.group()访问结果信息之前,您需要测试结果是否为“无”。