为什么在Python中出现“ AttributeError:'str'对象没有属性'append'”?

时间:2020-04-01 11:29:35

标签: python model lda

我正在尝试使用500个不同的txt生成潜在Dirichlet分配模型。 我的代码的一部分如下:

from gensim.models import Phrases
from gensim import corpora, models

bigram = Phrases(docs, min_count=10)
trigram = Phrases(bigram[docs])
for idx in range(len(docs)):
    for token in bigram[docs[idx]]:
        if '_' in token:
            # Token is a bigram, add to document.
            docs[idx].append(token)
    for token in trigram[docs[idx]]:
        if '_' in token:
            # Token is a bigram, add to document.
            docs[idx].append(token)

它给了我以下错误:

File ".../scriptLDA.py", line 74, in <module>
    docs[idx].append(token)
AttributeError: 'str' object has no attribute 'append'

有人可以为我修复它吗? 谢谢!

2 个答案:

答案 0 :(得分:1)

append()用于将元素添加到数组中,而不用于连接字符串。 https://docs.python.org/3/tutorial/datastructures.html 您可以这样做:

a = "string1" a = a + "string2"

或:

a = [1,2,3,4] a.append(5)

答案 1 :(得分:0)

欢迎使用Stackoverflow。

Python告诉您docs [idx]不是列表,而是字符串。因此,它没有append()方法供您调用。

>>> fred = "blah blah"
>>> fred.append("Bob")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'str' object has no attribute 'append'
>>> elsie = [1,2,3,4]
>>> elsie.append(5)
>>> elsie
[1, 2, 3, 4, 5]
>>> type(fred)
<class 'str'>
>>> type(elsie)
<class 'list'>
>>> 

如果您要做的只是将令牌字符串添加到docs [idx]字符串中,请使用'+':

>>> ginger = fred + "Another string"
>>> ginger
'blah blahAnother string'

如果更复杂,那就是另一回事了。