我正面临这个错误,我真的无法找到它的原因 有人可以指出它的原因吗?
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()函数之前,我是否要检查是否有特定的推文?对于这个错误,我甚至不知道它失败了。
答案 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()始终对我有用。谢谢!