python - 海象运算符:NameError:在封闭范围内赋值之前引用了自由变量“it”
问题描述
我想使用这样的海象运算符创建一个列表:
myvar = tr_list[8].css('td ::text').extract()
item['myvar'] = [
it := re.sub(PATTERN, "", i).strip() for i in myvar if len(it) > 0
]
我得到这个错误:
it := re.sub(PATTERN, "", i).strip() for i in myvar if len(it) > 0
NameError: free variable 'it' referenced before assignment in enclosing scope
另一方面,当我这样做时,它会起作用:
myvar = tr_list[8].css('td ::text').extract()
item['myvar'] = [
re.sub(PATTERN, "", i).strip() for i in myvar if len(re.sub(PATTERN, "", i).strip()) > 0
]
在哪里:
PATTERN = "\r|\t|\n"
任何人都可以帮忙吗?我不知道我在这里错过了什么
解决方案
好的。我想我终于通过将其更改为:
myvar = tr_list[8].css('td ::text').extract()
item['myvar'] = [
n for i in myvar if len(n := re.sub(PATTERN, "", i).strip()) > 0
]
推荐阅读
- java - 方法不会覆盖或实现超类型 Android Studio 中的方法
- imagick - imagick 扩展安装问题 xampp
- ruby-on-rails - 在 Ruby 中编写模块方法的正确方法
- o365security-compliance - 用于管理合规经理评估的 API
- jenkins-plugins - java.lang.BootstrapMethodError:java.lang.NoClassDefFoundError:
- java - 无法初始化类 com.intuit.karate.JsonUtil
- html - CSS实践中的问题
- eclipse - Eclipse 安装故障“安装失败并出现错误。显示日志”
- image - Flutter:如何从相机捕获全帧图像?
- mysql - 如何检查字符串是否与数据库中的 2 列匹配 - Laravel