将列表形式的字符串转换为整数列表
Converting a string in the form of a list to a list of integers
我有一个包含数字的列表,其类型是字符串。如何将输入转换为整数列表?
输入:
'[1, 3, 6, 8]'
期望的输出:
[1, 3, 6, 8]
您可以在此处使用 eval()
,并直接评估您的字符串输入:
inp = '[1, 3, 6, 8]'
output = eval(inp)
print(output) # [1, 3, 6, 8]
另一种方法,使用re.findall
:
output = [int(x) for x in re.findall(r'\d+', x)]
print(output) # [1, 3, 6, 8]
使用正则表达式
ip ='[1, 3, 6, 8]'
import re
opt = [int(a) for a in re.findall("\d+",ip)]
print(opt)
import ast
my_list = ast.literal_eval('[1, 3, 6, 8]')
另一个选项是内置函数 eval()
但 ast.literal_eval()
更安全。您可以阅读更多 here.
使用正则表达式 re.findall
这可以实现如下:
import re
test_string = '[1, 3, 6, 8]'
res = re.findall(r'\d+', test_string)
# Map every entry to int
res = list(map(int, res))
print (res)
如果您想要一种无需导入任何库的安全方法:
s = '[1, 3, 6, 8]'
print(list(map(int, ''.join(i if i.isdigit() else ' ' for i in s).split())))
输出:
[1, 3, 6, 8]
解释:
让我们看一下这条线:
list(map(int, ''.join(i if i.isdigit() else ' ' for i in s).split()))
在外面我们只是将字符串列表映射到整数,所以让我们先去掉那部分:
''.join(i if i.isdigit() else ' ' for i in s).split()
现在我们可以看到我们正在用空格替换 s
字符串中不是数字的每个字符,然后我们用空格拆分字符串,结果是
['1', '3', '6', '8']
然后可以将其映射到整数列表。
我建议使用 JSON standard library the method json.loads:
import json
string = '[1, 3, 6, 8]'
res = json.loads(string)
print(res)
#=> [1, 3, 6, 8]
并获得了所需的整数列表:
all([ isinstance(e, int) for e in res ])
#=> True
我有一个包含数字的列表,其类型是字符串。如何将输入转换为整数列表?
输入:
'[1, 3, 6, 8]'
期望的输出:
[1, 3, 6, 8]
您可以在此处使用 eval()
,并直接评估您的字符串输入:
inp = '[1, 3, 6, 8]'
output = eval(inp)
print(output) # [1, 3, 6, 8]
另一种方法,使用re.findall
:
output = [int(x) for x in re.findall(r'\d+', x)]
print(output) # [1, 3, 6, 8]
使用正则表达式
ip ='[1, 3, 6, 8]'
import re
opt = [int(a) for a in re.findall("\d+",ip)]
print(opt)
import ast
my_list = ast.literal_eval('[1, 3, 6, 8]')
另一个选项是内置函数 eval()
但 ast.literal_eval()
更安全。您可以阅读更多 here.
使用正则表达式 re.findall
这可以实现如下:
import re
test_string = '[1, 3, 6, 8]'
res = re.findall(r'\d+', test_string)
# Map every entry to int
res = list(map(int, res))
print (res)
如果您想要一种无需导入任何库的安全方法:
s = '[1, 3, 6, 8]'
print(list(map(int, ''.join(i if i.isdigit() else ' ' for i in s).split())))
输出:
[1, 3, 6, 8]
解释:
让我们看一下这条线:
list(map(int, ''.join(i if i.isdigit() else ' ' for i in s).split()))
在外面我们只是将字符串列表映射到整数,所以让我们先去掉那部分:
''.join(i if i.isdigit() else ' ' for i in s).split()
现在我们可以看到我们正在用空格替换 s
字符串中不是数字的每个字符,然后我们用空格拆分字符串,结果是
['1', '3', '6', '8']
然后可以将其映射到整数列表。
我建议使用 JSON standard library the method json.loads:
import json
string = '[1, 3, 6, 8]'
res = json.loads(string)
print(res)
#=> [1, 3, 6, 8]
并获得了所需的整数列表:
all([ isinstance(e, int) for e in res ])
#=> True