如何将这个字符串列表转换为整数

How to covert this list of strings into integers

我有一个由字符串列表组成的列表,我有兴趣将这个列表转换成一个整数。如何做到这一点。

k2=["'95', '66', '137', '70', '20'", "'36', '66', '44', '214', '105', '133'"]
    k3=[]
    for i in range(len(k2)):
      k3[i]=int(k2[i])

遍历列表中的每个项目,然后将它们拆分为 , 并去掉前后引号 ' 和白色 space

result = []
for v in k2:
    result += [int(i.strip("' ")) for i in v.split(',')]

#output:
[95, 66, 137, 70, 20, 36, 66, 44, 214, 105, 133]

这可以通过单个列表理解来完成。

In [28]: k3 = [int(string.strip(" '")) for k in k2 for string in k.split(',')]
Out[29]: [95, 66, 137, 70, 20, 36, 66, 44, 214, 105, 133]

以防万一您必须获取列表列表。遍历 , 上的列表拆分并找到整数,您可以将结果追加到同一索引处。

for i,va in enumerate(k3):
    k3[i] = ([int(re.findall(r'\d+', val)[0]) for val in va.split(',')])
# output[[95, 66, 137, 70, 20], [36, 66, 44, 214, 105, 133]]

对于更通用的情况,您可以使用 regular expression

import re

out = []

k3=["'95', '66', '137', '70', '20'", "'36', '66', '44', '214', '105', '133'"]

for i in k3:
    result = re.findall(r'\D(\d+)\D', i)
    out.extend(result)
    
print(out)
['95', '66', '137', '70', '20', '36', '66', '44', '214', '105', '133']

正则表达式解释:

https://regex101.com/r/2rhNJl/1

一个衬垫解决方案:

k3 = [int(i) for i in ','.join([_k2.replace("'", "").replace(" ", "") for _k2 in k2]).strip().split(',')]