首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TypeError:“TypeError”对象不是

TypeError:“TypeError”对象不是
EN

Stack Overflow用户
提问于 2021-07-17 11:41:31
回答 2查看 104关注 0票数 0

我是python的新手,我正在读一个文件,我想为“X-DSPAM-置信度: 0.7002”提取多个不同的值,我想添加所有不同的置信度。

代码语言:javascript
复制
xfile = open('/Users/Documents/python/mbox-short.txt')
for line in xfile:
    if not line.startswith("X-DSPAM-Confidence:"):
        continue
    xf = (line.rstrip())
    ## Start Counting Lines
    count = 0 
    for numlines in xf:
        count = count + 1
    ## total count of lines with value <<<< code works up to this point
    values = float(line[20:])
    print(values)
    for n in values:
        print(n) 

我收到下面提到的错误

代码语言:javascript
复制
Traceback (most recent call last):
  File "/Users//Documents/python/chapter7.py", line 14, in <module>
    for n in values:
TypeError: 'float' object is not iterable
EN

回答 2

Stack Overflow用户

发布于 2021-07-17 12:09:10

你不能遍历一个数字(浮点数,整型,复数)。首先,您需要将数字转换为字符串。

票数 0
EN

Stack Overflow用户

发布于 2021-07-17 12:38:55

一个浮点型循环需要一个sequence来表示,例如:一个字符串,一个列表,一个元组等等。一个浮点型不是一个序列,它是一个值,基本上是一个数字。你不能对一个值进行iter。

我猜您要做的是将line[20:]中的所有元素转换为浮点型,然后逐个打印出来。

一种解决方案是对字符串进行迭代,然后将值转换为浮点数,然后打印它们。

代码语言:javascript
复制
values = line[20:]
print(values)
for n in values:
    float_value = float(n)
    print(float_value) 

这只适用于您可以将上述values转换为浮点型,即它们要么是数字,要么在本例中是数字字符串,例如'1','2',‘Infinity’,'1E6‘等。请参阅有关浮点数据类型here的更多信息

编辑:读入你的评论,在我写完之后,你想要像0.75560...一样打印值。在这种情况下,您根本不需要循环。只需键入并打印该值即可

代码语言:javascript
复制
values = float(line[20:])
print(value)

在我之前写过的方法中,for循环一个接一个地获取每个值,所以如果您的字符串类似于'123‘,如果您这样做了

代码语言:javascript
复制
for n in '123':
    print(n)

您的输出将类似于:

代码语言:javascript
复制
>> '1'
>> '2'
>> '3'
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68417215

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档