Python 遍历列表,并转换字符串“;数字”;到整数
我试图将列表中的数字从字符串转换为整数,同时保持其他字符串不变 我已经准备了下面的代码,但是我收到一个错误,说“int类型的参数不可iterable” 为什么这不起作用,或者有什么更好的方法来解决这个问题Python 遍历列表,并转换字符串“;数字”;到整数,python,list,for-loop,Python,List,For Loop,我试图将列表中的数字从字符串转换为整数,同时保持其他字符串不变 我已经准备了下面的代码,但是我收到一个错误,说“int类型的参数不可iterable” 为什么这不起作用,或者有什么更好的方法来解决这个问题 test_list = ['the','dog','ran','down','984','47','the','chicken','4','77'] numSet = '0123456789' for i in range(0, len(test_list)): for j in
test_list = ['the','dog','ran','down','984','47','the','chicken','4','77']
numSet = '0123456789'
for i in range(0, len(test_list)):
for j in numSet:
if j in test_list[i]:
test_list[i]=int(test_list[i])
print(test_list)
然而,这将无法捕捉到类似“³”的内容
然而,这将无法捕捉到类似“³”的内容
使用此选项,列表中的数值被标注为int
由于字符将被识别为整数,它首先将它们转换为字符串,然后检查字符。例如,如果以47为例,numset将尝试检查47中的0(在数值中,顺便说一句,在操作中检查字符串中的值)。所以我想这对你来说是个总结 使用此选项,列表中的数值被标注为int
由于字符将被识别为整数,它首先将它们转换为字符串,然后检查字符。例如,如果以47为例,numset将尝试检查47中的0(在数值中,顺便说一句,在操作中检查字符串中的值)。因此,我想它会为您总结这个案例您应该使用方法
str.isdecimal
,它告诉您字符串是否是数字。所以'12'.isdecimal()
是真的
但是'A12'.isdecimal()
是假的
。可能的解决办法:
for i in range(len(test_list)):
if test_list[i].isdecimal():
test_list[i] = int(test_list[i])
请注意,如果元素是浮点,例如'1.234'
,它将不会被转换
编辑:根据下面的注释,将
isdigit
替换为isdecimal
。您应该使用方法str.isdecimal
,该方法告诉您字符串是否为数字。所以'12'.isdecimal()
是真的
但是'A12'.isdecimal()
是假的
。可能的解决办法:
for i in range(len(test_list)):
if test_list[i].isdecimal():
test_list[i] = int(test_list[i])
test_list = [int(test_list[i]) if test_list[i].isdecimal() else test_list[i] for i in range(len(test_list))]
请注意,如果元素是浮点,例如'1.234'
,它将不会被转换
编辑:根据下面的注释,将isdigit
替换为isdecimal
test_list = [int(test_list[i]) if test_list[i].isdecimal() else test_list[i] for i in range(len(test_list))]
上面的代码示例将数字转换为整数,保持字符串不变
上面的代码示例将数字转换为整数,保持字符串不变。
new\u list=[int(i)if i.isdigit()else i for i in test\u list]
?@Chris,不要使用isdigit()
,而是使用isdecimal()
。new\u list=[int(i)if i.isdigit()else i for i in test\u list]
?@Chris,不要使用isdigit()
,而是使用isdecimal()
。如果你能用这个str(test\u list[i])
给出一点解释会更好,因为字符会被识别为整数,首先它会将它们转换成字符串,然后再检查字符。例如,如果以47为例,numset将尝试检查47
中的0
(在数值中,顺便说一下in
操作检查字符串中的值)。因此,我想这对你来说是一个总结。请将此添加到你的答案中。如果你能用这个str(test_list[I])
给出一点解释会更好,因为字符会被识别为整数,首先它会将它们转换为字符串,然后检查字符。例如,如果以47为例,numset将尝试检查47
中的0
(在数值中,顺便说一下in
操作检查字符串中的值)。因此,我想这将对您的情况进行总结,请将此添加到您的答案中。isinstance('4',int)
将返回False
,这不是OPif item.isdecimal()int(item)elif item.count(“.”==1和item.replace(“.”,”).isdecimal()float(item)else item的期望行为。isinstance('4',int)
将返回False
,如果item.isdecimal()int(item)elif item.count(“.”)=1和item.replace(“.”),”),这不是OP所需的行为。isdecimal()float(item)else item
“³”。isdigit()
将返回True。从未意识到这一点,谢谢!将立即编辑我的答案。“³”。isdigit()
将返回True。从未意识到这一点,谢谢!现在将编辑我的答案。test\u list=[int(i)if i.isdecimal()else i for i in test\u list]
test\u list=[int(i)if i.isdecimal()else i for i in test\u list]