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

执行正则搜索时如何跳过JSON的null值,避免类型报错?

解决方案

你只需要对re.search传入参数的环节做最小修改即可,不需要改动整体代码结构,两种可选方案:

  • 方案1:加类型判断,跳过非字符串类型的取值
    直接修改判断逻辑,先校验y是否为字符串,再执行正则匹配:
if isinstance(y, str) and re.search('.*\u200b.*', y):

如果y是None或者其他非字符串类型,第一个条件不成立,不会执行后续正则匹配,自然不会报错。

  • 方案2:自动将非字符串值转为空字符串
    如果你的业务逻辑需要把None等非字符串值当做空内容处理,可以将y做一层转换后再传入:
if re.search('.*\u200b.*', y if isinstance(y, str) else ''):

这种写法会把所有非字符串的取值都替换为空字符串传入正则,匹配逻辑和原有字符串场景完全一致。

原理说明

json.load读取JSON时会把JSON的null值转为Python的None对象,而re.search只接受字符串或字节类型的参数,传入None就会抛出expected string or bytes-like object错误,上述两种方案都在不改动原有代码整体逻辑的前提下解决了参数类型不匹配的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 00:36:03