Python如何检查列表中的项目是否为浮点,如果是,则将其更改为字符串?
我正在浏览excel表格。我在某些栏目中的一些信息显示为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做了我所能做的一切,试图让它不是一个浮动,而且它不会修复它
我正在使用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位数的数字。