首页 > 解决方案 > TypeError 预期的字符串或类似字节的对象 - Pycharm

问题描述

我找不到为什么会发生此错误。

TypeError: expected string or bytes-like object

我正在尝试使用以下代码获得“赫芬顿邮报”作为赞助商出现的时间:

polls = list(set(covid_approval_polls["sponsor"]))

Huff_Post_regexp = r"\bHuffington Post\b"

Huff_Post = [
   approval 
   for approval in polls 
   if re.search(Huff_Post_regexp, approval) is not None
]

数据框如下所示:

 start_date    end_date         pollster    sponsor  sample_size population  \
0  2020-02-02  2020-02-04           YouGov  Economist       1500.0          a   
1  2020-02-02  2020-02-04           YouGov  Economist        376.0          a   
2  2020-02-02  2020-02-04           YouGov  Economist        523.0          a   
3  2020-02-02  2020-02-04           YouGov  Economist        599.0          a   
4  2020-02-07  2020-02-09  Morning Consult        NaN       2200.0          a   

标签: pythonpycharm

解决方案


的参数re.search必须是“字符串”或“字节”。正如我在您的“赞助商”列中看到的那样,有一个NaNfloat在该迭代中被解释为approval既不是字符串也不是字节。这就是你得到那个 TypeError 的原因。

编写此代码以查看其实际效果:

for item in list(set(covid_approval_polls["sponsor"])):
    print(item, type(item))

要解决这个问题,您可以忽略re.searchwith 单个条件pd.isna(),或者将 DataFrame 中的 NaN 替换为空字符串""


推荐阅读