我是python的新手,我正在读一个文件,我想为“X-DSPAM-置信度: 0.7002”提取多个不同的值,我想添加所有不同的置信度。
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) 我收到下面提到的错误
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发布于 2021-07-17 12:09:10
你不能遍历一个数字(浮点数,整型,复数)。首先,您需要将数字转换为字符串。
发布于 2021-07-17 12:38:55
一个浮点型循环需要一个sequence来表示,例如:一个字符串,一个列表,一个元组等等。一个浮点型不是一个序列,它是一个值,基本上是一个数字。你不能对一个值进行iter。
我猜您要做的是将line[20:]中的所有元素转换为浮点型,然后逐个打印出来。
一种解决方案是对字符串进行迭代,然后将值转换为浮点数,然后打印它们。
values = line[20:]
print(values)
for n in values:
float_value = float(n)
print(float_value) 这只适用于您可以将上述values转换为浮点型,即它们要么是数字,要么在本例中是数字字符串,例如'1','2',‘Infinity’,'1E6‘等。请参阅有关浮点数据类型here的更多信息
编辑:读入你的评论,在我写完之后,你想要像0.75560...一样打印值。在这种情况下,您根本不需要循环。只需键入并打印该值即可
values = float(line[20:])
print(value)在我之前写过的方法中,for循环一个接一个地获取每个值,所以如果您的字符串类似于'123‘,如果您这样做了
for n in '123':
print(n)您的输出将类似于:
>> '1'
>> '2'
>> '3'https://stackoverflow.com/questions/68417215
复制相似问题