Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.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_List_For Loop - Fatal编程技术网

Python 遍历列表,并转换字符串“;数字”;到整数

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

我试图将列表中的数字从字符串转换为整数,同时保持其他字符串不变

我已经准备了下面的代码,但是我收到一个错误,说“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 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
,这不是OP
if 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]