Получение ошибки в нижнем регистре алфавита - PullRequest
0 голосов
/ 14 октября 2018

У меня есть большие данные о разговоре в кино: - Корнеллские диалоги.Я пытаюсь преобразовать их в нижний регистр

    def clean_text(text):
    text = text.lower()
    text = re.sub(r"i'm", "i am", text)
    text = re.sub(r"he's", "he is", text)
    text = re.sub(r"she's", "she is", text)
    text = re.sub(r"that's", "that is", text)
    text = re.sub(r"what's", "what is", text)
    text = re.sub(r"where's", "where is", text)
    text = re.sub(r"\'re", "are", text)
    text = re.sub(r"\'d", "would", text)
    text = re.sub(r"won't", "will not", text)
    text = re.sub(r"can't", "cannot", text)
    text = re.sub(r"[-()\"#/@;:<>{}+=-|.?,]", "", text)
    text = re.sub(r"\'ll", "will", text)
    text = re.sub(r"\'ve", "have", text)
    return text

#cleaning the questions
clean_questions = []
for question in questions:
    clean_questions.append(clean_text(question))

и получаю следующий обратный вызов:

Traceback (most recent call last):

  File "<ipython-input-17-4733a5502cb3>", line 3, in <module>
    clean_questions.append(clean_text(question))

  File "<ipython-input-16-a9a9890808b2>", line 2, in clean_text
    text = text.lower()

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

Любые предложения о том, что я делаю неправильно и как это исправить, будут весьмаоценили !!!Спасибо !!

Ответы [ 3 ]

0 голосов
/ 14 октября 2018

Lower () является строковым методом и не будет работать со списками.Используйте цикл для итерации по списку и Lower () каждого элемента

0 голосов
/ 14 октября 2018

В любом случае, я отвечаю, даже если questions список не отображается:

Это зависит от списка, является ли он вложенным списком (я думаю, это из-за ошибки), то есть:

l=[['ABC','XYZ'],'BlA']

Это не будет работать, потому что есть списки как элементы, так что сгладьте это:

x=[]
for i in l:
    if type(i) is list:
        x.extend(i)
    else:
        x.append(i)

Сейчас:

print(x)

Is:

['ABC','XYZ','BlA']

Тогда ваш код для x будет работать, OTOH:

['A','B','C']

То есть все строки, он будет работать так же, как и ожидалось.

0 голосов
/ 14 октября 2018

Str.lower () работает не для целых списков, а для отдельных строк.Вы можете исправить это, выполнив что-то вроде этого:

for i in range(len(text)): text[i].lower()
...