Python 如何将字符串列表转换为整数列表?
假设我有一个字符串:Python 如何将字符串列表转换为整数列表?,python,python-2.7,Python,Python 2.7,假设我有一个字符串:line=“[1,2,12]\n” 我想把它转换成一个整数列表:[1,2,12] 我有一个解决方案: new_list = [] for char in line: try: new_list.append(int(char)) except ValueError: pass 但这在数字超过一位数的情况下不起作用。有没有一种内在的/更好的方法可以做到这一点?谢谢您可以使用正则表达式: import re line = "[1,
line=“[1,2,12]\n”
我想把它转换成一个整数列表:
[1,2,12]
我有一个解决方案:
new_list = []
for char in line:
try:
new_list.append(int(char))
except ValueError:
pass
但这在数字超过一位数的情况下不起作用。有没有一种内在的/更好的方法可以做到这一点?谢谢您可以使用正则表达式:
import re
line = "[1, 2, 12]\n"
new_list = []
for char in re.findall("\d+", line):
try:
new_list.append(int(char))
except ValueError:
pass
print(new_list)
结果:[1,2,12]
new_list = [int(num) for num in line.strip('[]\n').split(', ')]
更具可读性的解决方案是:
line = line.strip('[]\n')
list_of_strs = line.split(', ')
list_of_nums = []
for elem in list_of_strs:
list_of_nums.append(int(elem))
第一行去掉了括号和换行符。然后剩余的字符串以逗号分隔,结果保存在列表中。现在我们有了一个元素列表,其中每个数字仍然是一个字符串。然后for
循环将每个字符串元素转换为数字。Regex和列表理解:
正则表达式:\d+
将有一个或多个重复(+
)或上一个重复(\d
),因此在本例中是一个数字(\d
)。因此,我们可以通过使用re.findall()
查找该字符串的所有匹配项来在字符串中使用它
但是,这将返回int
:1
、2
和12
的列表,但作为字符串,因此我们可以使用列表理解将其转换为int
类型
您的代码可能如下所示:
import re
s = "[1, 2, 12]\n"
l = [int(i) for i in re.findall("\d+", s)]
print(l)
这将给出列表:[1,2,12]
这与我使用的regex
相同!但是它将int
作为字符串返回,因此您可以在一行列表中轻松地转换它们。除了
语句之外,没有必要进行尝试,因为您的问题与OP的问题不同。for循环在原始字符串中没有循环通过chars
,而是循环通过regex
的结果,因此无需测试它是否可以转换为int,因为regex
将只返回ints
)@JoeIddon是的,你有很好的lambda。