You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python列表推导式报Expected string or bytes-like object错误如何解决

错误原因与修复方案

核心错误点

  • re.search() 参数顺序颠倒:正确语法为re.search(匹配模式, 待搜索字符串, 标志位),你的代码把待检查的元组字段item[4]和目标匹配值merchant_state写反,完全无法实现筛选需求。
  • 返回值判断错误:re.search()匹配成功返回匹配对象,失败返回None,你用!= -1的判断逻辑完全错误。
  • 缺少非字符串类型兼容:大型数据集中item[4]可能存在None、数字等非字符串值,直接传入re.search()就会触发你遇到的类型错误。

修复代码

方案1:保留正则匹配的写法

首先确认代码开头已导入正则模块:

import re
merchant_state = 'VIC'

# 原companies列表定义不变
companies = [(378355, 'ACT', 'DEJAN TOMIC', 'Individual/Sole Trader', 
'VIC', '3175', 97603461250, 'FADEDLINESBARBERSHOP', 20), 
(408649, 'ACT', 'ALEXANDER DEJANOVIC', 
'Individual/Sole Trader', 'NSW', '2193', 97733511621, None, 20),
(433402, 'ACT', 'LUTHERAN CHURCH OF AUSTRALIA QUEENSLAND DISTRICT(LUTHERAN COMM CAR', 'Other Unincorporated Entity', 'QLD', '4560', 97899426696, 'GRACEVILLE CENTRE', 20)]

# 修复后的筛选逻辑
companies = [item for item in companies if isinstance(item[4], str) and re.search(merchant_state, item[4], re.IGNORECASE)]

方案2:更高效的无正则写法

如果只是简单判断包含关系,不需要复杂正则规则,直接用in关键字性能更好,也不需要导入re模块:

merchant_state = 'VIC'
# 原companies列表定义不变
companies = [item for item in companies if isinstance(item[4], str) and merchant_state.upper() in item[4].upper()]

内容的提问来源于stack exchange,提问作者prij_naidu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 07:54:01