将字符串拆分为整数列表[重复]

Posted

技术标签:

【中文标题】将字符串拆分为整数列表[重复]【英文标题】:Split a string to a list of integers [duplicate] 【发布时间】:2021-04-05 17:37:22 【问题描述】:

我正在使用 Google 的 OR-Tools 来解决一个简单的 VRP 问题。我需要绘制解决方案。因此,我解析 print_solution() 函数以返回旅游词典。现在,我有一个这样的字符串列表

tour = [' 0 ->  14 ->  15 ->  19 ->  1 ->  13 ->  5 ->  10 ->  20 ->  3 ->  7 ->  6 ->  16 ->  4 ->  9 ->  2 ->  17 ->  11 ->  12 ->  8 ->  18 -> 0']

有人可以帮我从这个列表中获取整数吗?

【问题讨论】:

【参考方案1】:

第一个提供的答案有一些问题,但它几乎可以工作。它背后的想法是合理的。有关我看到的问题的解释,请参阅答案中的 cmets。

我会以不同的方式执行此操作,因此拆分结果是纯数字,而不是两边都有空格的数字,然后必须单独处理。也就是说,我会导致空格被视为分隔符的一部分。所以我会这样做:

import re

tour = [' 0 ->  14 ->  15 ->  19 ->  1 ->  13 -> 5 ->  10 ->  20 ->  3 ->  7 ->  6 ->  16 ->  4 ->  9 ->  2 ->  17 ->  11 ->  12 ->  8 ->  18 -> 0']

x = [int(digits) for digits in re.split(r'\s*->\s*', tour[0])]

print(x)

结果:

[0, 14, 15, 19, 1, 13, 5, 10, 20, 3, 7, 6, 16, 4, 9, 2, 17, 11, 12, 8, 18, 0]

无论int() 是否正确处理用空格填充的参数,此代码都将起作用,因为空格已被删除。

【讨论】:

【参考方案2】:
x = tour.split('->')
int_list = [int(num.strip()) for num in x]

【讨论】:

您不能在列表中调用split,因此鉴于tour 的OP 定义,此答案的第一行将失败。相反,应该在提供的列表tour 的单个元素上调用split,如下所示:x = tour[0].split('->') 函数int() 会从它所传递的内容的开头和结尾去除空格,因此这里不需要调用strip()。第二行可以是:int_list = [int(num) for num in x]

以上是关于将字符串拆分为整数列表[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何在C#中将带逗号的字符串拆分为两个字符串[重复]

如何将字符串拆分为字符串和整数? [复制]

将字符串拆分为字符串数组[重复]

如何将字符串中的“\t”拆分为两个单独的字符“\”和“t”? (如何拆分转义序列?)[重复]

在 C++ 中使用 istringstream 将字符串拆分为整数

在 Python 中,如何将字符串拆分为多个整数?