浮'对象没有属性' lower'

时间:2014-11-19 05:17:44

标签: python

我正面临这个错误,我真的无法找到它的原因 有人可以指出它的原因吗?

for i in tweet_raw.comments:
    mns_proc.append(processComUni(i))

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-416-439073b420d1> in <module>()
      1 for i in tweet_raw.comments:
----> 2     tweet_processed.append(processtwt(i))
      3 

<ipython-input-414-4e1b8a8fb285> in processtwt(tweet)
      4     #Convert to lower case
      5     #tweet = re.sub('RT[\s]+','',tweet)
----> 6     tweet = tweet.lower()
      7     #Convert www.* or https?://* to URL
      8     #tweet = re.sub('((www\.[\s]+)|(https?://[^\s]+))','',tweet)

AttributeError: 'float' object has no attribute 'lower'

面临的第二个类似错误是:

for i in tweet_raw.comments:
    tweet_proc.append(processtwt(i))

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-423-439073b420d1> in <module>()
      1 for i in tweet_raw.comments:
----> 2     tweet_proc.append(processtwt(i))
      3 

<ipython-input-421-38fab2ef704e> in processComUni(tweet)
     11         tweet=re.sub(('[http]+s?://[^\s<>"]+|www\.[^\s<>"]+'),'', tweet)
     12     #Convert @username to AT_USER
---> 13     tweet = re.sub('@[^\s]+',' ',tweet)
     14     #Remove additional white spaces
     15     tweet = re.sub('[\s]+', ' ', tweet)

C:\Users\m1027201\AppData\Local\Continuum\Anaconda\lib\re.pyc in sub(pattern, repl, string, count, flags)
    149     a callable, it's passed the match object and must return
    150     a replacement string to be used."""
--> 151     return _compile(pattern, flags).sub(repl, string, count)
    152 
    153 def subn(pattern, repl, string, count=0, flags=0):

TypeError: expected string or buffer

在将它传递给processtwt()函数之前,我是否要检查是否有特定的推文?对于这个错误,我甚至不知道它失败了。

3 个答案:

答案 0 :(得分:8)

试试这个

if type(tweet) is str:
        tweet = tweet.lower()

答案 1 :(得分:2)

我的答案将比shalini答案更广泛。如果要检查对象是否为str类型,我建议您使用type检查对象的isinstance(),如下所示。这是更多的pythonic方式。

tweet = "stackoverflow"

## best way of doing it
if isinstance(tweet,(str,)):
    print tweet

## other way of doing it
if type(tweet) is str:
    print tweet

## This is one more way to do it
if type(tweet) == str:
    print tweet

上述所有工作都可以正常检查对象的类型是否为字符串。

答案 2 :(得分:1)

只需尝试使用以下方法: tweet = str(tweet).lower()

最近,我一直面临许多此类错误,并将它们转换为字符串,然后再应用lower()始终对我有用。谢谢!