Python float类型的对象没有长度

Python float类型的对象没有长度,python,Python,代码: 错误: 回溯(最近一次呼叫上次) 在() 10 11 --->12条英语消息=提取英语文本(nlp,消息) 3帧 /usr/local/lib/python3.7/dist-packages/spacy/language.py in\uuuu调用(self、text、disable、component\u cfg) 425份文件:https://spacy.io/api/language#call 426 """ -->427如果len(text)>self.max_长度

代码:

错误:

回溯(最近一次呼叫上次)
在()
10
11
--->12条英语消息=提取英语文本(nlp,消息)
3帧
/usr/local/lib/python3.7/dist-packages/spacy/language.py in\uuuu调用(self、text、disable、component\u cfg)
425份文件:https://spacy.io/api/language#call
426         """
-->427如果len(text)>self.max_长度:
428上升值误差(
429错误.E088.格式(长度=长度(文本),最大长度=自身最大长度)
TypeError:类型为“float”的对象没有len()

传递到第427行的一些
文本属于
float
类型。有两种方法可以解决此问题:

  • 您可以找到某种方法来只收集
    str
    类型的输入

  • 您可以编写代码来检查其他数据类型,并将它们转换为类型
    str
    ,或者使用
    try
    /
    引发错误,但
    除外。为此,您可以根据情况同时执行这两种操作:


  • 您是否100%确定您调用的
    extract_english_text
    所用的
    消息是字符串,而不是浮点数?您是否可以在定义
    nlp
    message
    的位置共享代码位?我很困惑。您究竟在哪里调用
    len()
    ?message=[]for I in range(len(messages)):message.append(messages.iloc[i]['CONTENT'])您的
    消息中至少有一条是
    float
    类型,而不是
    string
    @VartikaV。我在您的帖子中看不到该代码。再想一想,Python中的所有数据类型似乎都可以转换为字符串,在这种情况下,您不需要使用
    try
    /
    除了
    def is_english(nlp, text):
        '''Detect whether a text is English'''
        return nlp(text)._.language['language'] == 'en'
    
    def extract_english_text(nlp, messages):
        '''Extract English text'''
        return [text for text in messages if is_english(nlp, text)]
    
    
    english_messages = extract_english_text(nlp, message)
    
    if type(text) != 'str':
        try:
            text = str(text)
        except:
            raise ValueError(f'Data type {type(text)} cannot be converted to a string.')