Python 正则表达式 re 中出现 'str' object has no attribute 'findall' 错误如何解决?
Python 正则表达式 re 中出现’str’ object has no attribute ‘findall’,尝试了很多次,就是不行!
无论是 findall 还是 match 还是 search 都是’str’不行,.text 和.content 也都试过,总是报错。麻烦大神们帮个忙!
代码如下
import requests
import re
proxies = {“http”: “http://222.190.126.62:808”}
r = requests.get(‘http://icanhazip.com/’, proxies=proxies).text
re = '^((25[0-5]|2[0-4]\d|[01]?\d\d?).){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)$'
ip = re.findall(re, r)
print(ip)
Python 正则表达式 re 中出现 ‘str’ object has no attribute ‘findall’ 错误如何解决?
re 被占用了
这个错误通常是因为错误地使用了 re.findall 方法。re.findall() 是 re 模块的函数,需要直接调用,而不是字符串对象的方法。
错误示例:
import re
text = "Hello 123 World 456"
result = text.findall(r'\d+') # 错误!字符串没有 findall 方法
正确做法:
import re
text = "Hello 123 World 456"
# 方法1:使用 re.findall() 函数
result = re.findall(r'\d+', text)
print(result) # 输出: ['123', '456']
# 方法2:先编译正则表达式
pattern = re.compile(r'\d+')
result = pattern.findall(text)
print(result) # 输出: ['123', '456']
关键点:
re.findall(pattern, string)是模块级函数re.compile(pattern).findall(string)是编译后模式对象的方法- 字符串对象只有
str.find()、str.replace()等内置方法,没有正则相关方法
检查你的代码,确保是通过 re.findall() 或编译后的模式对象调用,而不是在字符串上直接调用 .findall()。
总结:正确导入并使用 re 模块的函数。
第 5 行给局部变量 re 赋值的时候把第二行 import 的 re 模块覆盖掉了
所以第 6 行 re.findall 实际上尝试执行第 5 行的字符串的 findall 方法
把正则字符串的变量换成别的名字就好
你变量名非要叫 re 么……
一般都叫 pattern 吧
好的吧
知道了,谢谢!

