出现错误:“float”类型的对象没有 len()

问题描述 投票:0回答:1

我对Python很幼稚,几个月前开始学习Python 我正在本地处理 Twitter 数据,它有 4 列。 ID、品牌、情感、评论

def data_clean_pipeline(text):
    #removing html tags
    text = str(BeautifulSoup(text).get_text())
    #removing any nonletter words 
    text = re.sub("[^a-zA-Z]", " ", text)
    text = text.lower()
    text = nltk.word_tokenize(text)
    SW = stopwords.words('english')
    text = [t for t in text if not t in set(SW)]
    #Then we can apply stemming and then lemmitize the data
    SS_stem = SnowballStemmer(language='english')
    text = [SS_stem.stem(t) for t in text]
    word_lemmitize = WordNetLemmatizer()
    text = [word_lemmitize.lemmatize(t) for t in text]
    return " ".join(text)

当我将此函数应用于 Twitter 数据中的评论之一时,它可以工作,但是当我应用于整个列时
例如

data_clean_pipeline(twitter_data['comment'][0] #it works fine and return the output

但是当我将此函数应用于列时会发生错误

twitter_data['clean'] = twitter_data['comment'].apply(data_clean_pipeline)  

任何反馈都会有帮助,谢谢:)

我在 python 错误窗口的图像描述中附上了错误代码的图像

在此输入图片描述

我原以为它将将该功能应用于整个评论栏,但这并没有发生。
我尝试过多次失败

python python-3.x twitter nlp project
1个回答
0
投票

Python 图像描述中我的错误代码的图像 错误窗口

它确实表明以下行发生错误

text = str(BeautifulSoup(text).get_text())

将把该函数应用到整个评论栏,而不是 正在发生

它确实尝试这样做,但失败了。显然您在评论栏中至少有一个条目不适合

BeautifulSoup
。您应该在处理之前清理数据或制作函数,以便它返回指示正确类型故障的值。在
python
中,try- except-else 用于处理非典型情况。对于文本处理功能,可以使用以下方式

def clean(text):
    try:
        result = ...  # process text as you wish
    except Exception:
        return "<error>"
    else:
        return text
© www.soinside.com 2019 - 2024. All rights reserved.