如何将这个字符串列表转换为整数
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']
正则表达式解释:
一个衬垫解决方案:
k3 = [int(i) for i in ','.join([_k2.replace("'", "").replace(" ", "") for _k2 in k2]).strip().split(',')]
我有一个由字符串列表组成的列表,我有兴趣将这个列表转换成一个整数。如何做到这一点。
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']
正则表达式解释:
一个衬垫解决方案:
k3 = [int(i) for i in ','.join([_k2.replace("'", "").replace(" ", "") for _k2 in k2]).strip().split(',')]