TypeError:“ int”对象不可迭代。当遍历字符串数据中的每个字符串时

时间:2019-02-28 02:36:51

标签: python string loops text iteration

美好的一天

我的目标是使用.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 :(得分:0)

text.count返回一个整数。您尝试对其进行迭代:

for string in text.count(0,)

,但由于它返回整数,因此没有in(不可迭代)。这就是错误消息告诉您的内容。

将来,为了更好地确定错误的来源,请尝试将单行代码分成多行。这样可以为您提供有关操作的哪一部分失败的更好的反馈。

答案 1 :(得分:0)

您得到的异常是因为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]

希望这会有所帮助!

答案 2 :(得分:0)

这里有几个问题需要指出:

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

命名临时变量string是一个坏主意,因为它看起来很像类型名称。像s之类的东西更为常见和可读。

也许是word,因为这就是您看来的样子。这是第二个问题,您的方法似乎可以将字符字符串分解,但是从注释看来,您想对单词进行操作? (您对strip的使用也表明了这一点)

您要在''上进行连接,这将导致字符串的所有部分都被连接,并且它们之间没有空格。

正如其他人指出的那样,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])