Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python如何检查列表中的项目是否为浮点,如果是,则将其更改为字符串?_Python_Python 3.x_String_Floating Point_Rtti - Fatal编程技术网

Python如何检查列表中的项目是否为浮点,如果是,则将其更改为字符串?

Python如何检查列表中的项目是否为浮点,如果是,则将其更改为字符串?,python,python-3.x,string,floating-point,rtti,Python,Python 3.x,String,Floating Point,Rtti,我正在浏览excel表格。我在某些栏目中的一些信息显示为浮动。我已经通过excel做了我所能做的一切,试图让它不是一个浮动,而且它不会修复它 我正在使用xlrd读取数据 for i in range(ws.nrows): row = ws.row_values(i) if type(row[1]) == 'float': row[1] = str(row[1]) if ',' in row[1]: DO STUFF 我不断地发现这个错误:

我正在浏览excel表格。我在某些栏目中的一些信息显示为
浮动
。我已经通过excel做了我所能做的一切,试图让它不是一个浮动,而且它不会修复它

我正在使用xlrd读取数据

for i in range(ws.nrows):
    row = ws.row_values(i)
    if type(row[1]) == 'float':
        row[1] = str(row[1])
    if ',' in row[1]:
        DO STUFF
我不断地发现这个错误:

if ',' in row[1]:
TypeError: argument of type 'float' is not iterable

出于某种原因,这是行不通的。我甚至可以在遍历列表时打印类型,它会说class'float',但它似乎从未进入if type循环。

type
返回实际的
float
类,而不是字符串
'float'
。检查类型的最简单方法是使用
isinstance
内置函数:

if isinstance(row[1], float):
    row[1] = str(row[1])

发生的情况是,行[1]的值是一个float(您在第一个if语句中没有正确地捕捉到这一点,请参见下文)。当您在b中计算
a时,Python尝试迭代
b
,以查看
a
是否出现在其中。这就是为什么您会得到一个浮动不可编辑的错误

现在对于if语句,
type
函数不返回字符串(尽管您可以使用
str(type(x))
强制返回字符串。要检查类型是否为浮点,您需要执行以下操作:

if type(row[1]) is float:
    # do stuff
    pass
else:
    # do other stuff
    pass
不过,最有可能的情况是,最好检查它是否是字符串-

if type(row[1]) is not str:
    # do stuff for floats
    pass
else:
    # do other stuff that involves checking if a substring is present
    pass

另请参见:

OMG谢谢。这正是我所需要的。我现在唯一的问题是,我的一些数字有点太大了,我得到了这个结果:8.156e+26,而我应该得到一个11位数的数字。