列出python的int字符串

时间:2017-11-03 19:42:57

标签: python string list int

我有以下字符串:

  string =  '['1', '2', '3']'

我想把它变成一个int列表,这样我就可以在列表中添加每个int以获得6的输出

我目前有这段代码:

stripQuotes = ", ".join(string)
intList =[stripQuotes]
map(int, intList)
print(intList)

但我得到了输出:

['1, 2, 3']

而不是:

[1, 2, 3]

6 个答案:

答案 0 :(得分:2)

您可以简单地使用正则表达式:

  

短:

import re
string =  """'['1' ,'2', '3']'"""
pattern=r'(\d.*?)'


match=re.finditer(pattern,string)
print([int(integer.group()) for integer in match])
  

详细说明:

import re
string =  """'['1' ,'2', '3']'"""

pattern=r'(\d.*?)'


int_list=[]
match=re.finditer(pattern,string)
for integer in match:
    int_list.append(int(integer.group()))

print(int_list)

输出:

[1, 2, 3]

正如你所说:

  

所以我可以在列表中添加每个int以获得6

的输出

然后:

print(sum([int(integer.group()) for integer in match]))

输出:

6

答案 1 :(得分:1)

您没有转义将导致错误的内部字符串。您可以用双引号替换外部引号:"['1', '2', '3']"或者您可以像这样转义内部引号:'[\'1\', \'2\', \'3\']'(我个人更喜欢第一个)

from ast import literal_eval

string = "['1', '2', '3']"
int_list = [int(i) for i in literal_eval(string)]
print(int_list)

然后您只需使用sum()对列表中的元素求和:

sum(int_list)

查看literal_eval

上的文档

答案 2 :(得分:0)

你可以评估:

listofstrings=eval(strings)
ints= [int(k) for k in listofstrings]

如果你想要输入安全性(如果我运行eval,我从不在晚上睡觉),这是一种更安全的方法:

elems= strings.split("'")
ints=[]
for k in elems:
    try:
        ints+=int(k)

答案 3 :(得分:0)

这会将字符串列表转换为整数列表

strList =  ['1', '2', '3']
intList = [int(i) for i in strList]

答案 4 :(得分:-1)

您还可以使用地图功能来解决此问题。例如:

Python 2.x:

string = "['1', '2', '3']"
map(int, eval(string))
[1,2,3]

Python 3.x:

string = "['1', '2', '3']"
list(map(int, eval(string)))
[1,2,3]

答案 5 :(得分:-1)

您可以使用此代码

s1 = "['1', '2', '3']"    
print(sum([int(x) for x in list(s1) if x.isnumeric()]))

将输出 6