Python 如何检查列表中的项目是否为浮点数,如果是,则将其更改为字符串?
Python How to check if an item in a list is a float, and if so, change it to a string?
我正在遍历 excel sheet。我在某些专栏中的某些信息显示为 float
。我已尽我所能通过 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
returns 实际 float
class,而不是字符串 'float'
。检查类型的最简单方法是使用 isinstance
内置函数:
if isinstance(row[1], float):
row[1] = str(row[1])
发生的事情是 row[1] 的值是一个浮点数(您没有在第一个 if 语句中正确地捕捉到它 - 见下文)。当您评估 a in b
时,Python 会尝试遍历 b
以查看 a
是否出现在其中。这就是为什么您收到浮动不可迭代的错误。
现在对于 if 语句 - type
函数不是 return 字符串(尽管您可以使用 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
另请参阅:How to determine a Python variable's type?
我正在遍历 excel sheet。我在某些专栏中的某些信息显示为 float
。我已尽我所能通过 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
returns 实际 float
class,而不是字符串 'float'
。检查类型的最简单方法是使用 isinstance
内置函数:
if isinstance(row[1], float):
row[1] = str(row[1])
发生的事情是 row[1] 的值是一个浮点数(您没有在第一个 if 语句中正确地捕捉到它 - 见下文)。当您评估 a in b
时,Python 会尝试遍历 b
以查看 a
是否出现在其中。这就是为什么您收到浮动不可迭代的错误。
现在对于 if 语句 - type
函数不是 return 字符串(尽管您可以使用 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
另请参阅:How to determine a Python variable's type?