Я пытаюсь превратить строку в список отдельных слов - ничего, кроме букв. Однако, насколько я могу судить, unicode вызывает проблемы.AttributeError: объект 'unicode' не имеет атрибута 'remove'
essay_text = ['This,', 'this,', 'this', 'and', 'that.']
def create_keywords(self):
low_text = self.essay_text.lower()
word_list = low_text.split()
abcs = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'x', 'y', 'z']
for n in word_list:
for m in n:
for l in abcs:
if m!=l:
n.remove(m)
self.keywords.setdefault(n, 0)
self.keywords[n] = word_list.count(n)
for m in bad_words:
if n==m:
del self.keywords[n]
print self.keywords
Я получаю эту ошибку:
AttributeError: 'unicode' object has no attribute 'remove'
Как я могу решить эту проблему?
Обновление: Я не понимаю, почему мои строки находятся в юникоде. Если это имеет значение, вот класс, который относится к этой модели:
class Essay(models.Model):
title = models.CharField(max_length=100)
author = models.CharField(max_length=100)
email = models.EmailField(max_length=100)
essay_text = models.TextField()
sources = models.TextField()
def __unicode__(self):
return self.title
Почему мои строки находятся в юникоде?
Просто подсказка - Ваш текущий код продолжает переопределение 'abcs'. Лучше было бы переместить это из петель, так что он будет определен только один раз. Или, что еще лучше, используйте 'ascii_lowercase' из модуля' string'. – iCodez
У вас есть 'from __future__ import unicode_literals' в вашем коде? что заставит Python 2 обрабатывать '' string'' как Unicode. –