此问题已在此处有答案:
re.search if/if not, but "nonetype object has no attribute 'group'"(2个答案)
23天前关闭
此帖子于14天前编辑并提交审核,未能重新打开帖子:
原始关闭原因未解决
我努力正确地格式化regex,以在以下文件名中提取第一个日期:
TEST_2022-03-04-05-30-20.csv_parsed.csv_encrypted.csv
我运行了下面的代码,并希望提取每个格式为2022-03-04
的文件名中的第一个日期
date =re.search('\ B(\d{4}-\d{2}-\d{2}).',filename)
我在www.example.com行中获得了以下错误re.search:〉AttributeError:“NoneType”对象没有属性“group”
下面的答案很有帮助,解决了这个问题。它是学习如何利用正则表达式搜索的宝贵资源。
2条答案
按热度按时间3zwjbxry1#
你的正则表达式有几个问题。
首先,正则表达式本身是不正确的:
由于您的
filename
(TEST_2022-03-04-05-30-20.csv_parsed.csv_encrypted.csv
)没有任何这样的组,因此re.search()
失败并返回None
。原因如下:2022-03-04
后面没有点\b
不匹配,因为_
和2
都被视为单词字符。也就是说,regex应该修改,像这样:
现在,你看到那些反斜杠了吗?永远记住,你需要在字符串中再次转义它们。这可以使用原始字符串自动完成:
试试看:
cx6n0qe32#
您需要检查正则表达式是否匹配,然后再尝试提取匹配的文本。
还请注意,使用了
r'...'
原始字符串,并使用group(1)
仅从带括号的表达式中提取匹配项。