Ошибка типа: объект 'int' не повторяется.При переборе каждой строки в строковых данных - PullRequest
0 голосов
/ 28 февраля 2019

добрый день,

Моя цель - использовать .lower() для преобразования каждой строки в текстовых данных в нижний регистр.Я пытался использовать .count() с однострочной итерацией.Однако я получаю следующую ошибку:

TypeError: 'int' object is not iterable

Вот мой код:

# Iterating over the strings in the data. The data is called text
text_lowercase = ''.join((string.lower().strip() for string in text.count(0,)))

Я хочу использовать однострочную итерацию и сделать это.Помощь будет по достоинству оценена.Ура!

Ответы [ 3 ]

0 голосов
/ 28 февраля 2019

Исключение, которое вы получаете, состоит в том, что count() возвращает int, а затем вы пытаетесь перебрать этот int.Я думаю, что вы должны удалить count, и вам, возможно, будет хорошо (в зависимости от того, как выглядит text)

Если вы хотите иметь функцию, которая только в нижнем регистре встречает экземпляры string внутриваш text, может быть, вы можете использовать что-то вроде этого:

def lowercase_instance(text, string):
    return string.lower().join(text.split(string))

Теперь, если у вас есть список текстов, вы можете сделать что-то вроде этого:

lowercase_texts = [lowercase_instance(text, string) for text in texts]

, надеюсь, этопомогает!

0 голосов
/ 28 февраля 2019

Здесь есть пара моментов, на которые следует обратить внимание:

text_lowercase = ''.join((string.lower().strip() for string in text.count(0,)))

Называть временную переменную string - плохая идея, поскольку она очень похожа на имя типа.Что-то вроде s более распространено и читабельно.

Или, может быть, word, потому что это то, что вам нужно после этого, кажется.Это вторая проблема, ваш подход, кажется, разбивает строку в символах, но, судя по комментариям, вы хотели бы оперировать словами?(использование strip также предполагает это)

Вы присоединяетесь к '', в результате чего все части строки соединяются без пробелов между ними.

Какдругие отмечают, что count возвращает целое число, но вы хотите работать с фактической строкой.Вы указали, что пытались повторить только count, и это не нужно в Python, как во многих других языках.

Соберите все вместе для слов:

text_lowercase = ' '.join([w.lower() for w in text.split(' ')])

Или, если вам нужны символы:

text_lowercase = ''.join([ch.lower() for ch in text])

Но тогда вы могли бы просто:

text_lowercase = text.lower()

Возможно, вы любите слова, но хотите избавиться от лишних пробелов?

text_lowercase = ' '.join([w.lower() for w in text.split(' ') if w != ''])

Или встенография:

text_lowercase = ' '.join([w.lower() for w in text.split(' ') if w])
0 голосов
/ 28 февраля 2019

text.count возвращает целое число.Вы пытаетесь перебрать его:

for string in text.count(0,)

, но так как он возвращает целое число, in нет (это не повторяется).Это то, о чем говорится в сообщении об ошибке.

В будущем, чтобы лучше определить источник ошибки, попробуйте разбить строки на несколько строк.Это даст вам более точную информацию о том, какая часть вашей операции терпит неудачу.

...