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.')