美好的一天
我的目标是使用.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,)))
我想使用单线迭代并执行此操作。 帮助将不胜感激。干杯!
答案 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])