将字符串转换为正数和负数列表

4
如果我有一个字符串总是以'a,b,c,d,e'的形式出现,其中字母是正数或负数,例如'1,-2,3,4,-5',我想将其转换为元组,例如(1,-2,3,4,-5),我该怎么做?
3个回答

6

一种方法是使用ast.literal_eval

安全地评估表达式节点或包含Python表达式的字符串。提供的字符串或节点只能由以下Python文字结构组成:字符串、数字、元组、列表、字典、布尔值和None

这可用于从不受信任的来源安全地评估包含Python表达式的字符串,而无需自己解析值。

>>> import ast
>>> ast.literal_eval('1,-2,3,4,-5')
(1, -2, 3, 4, -5)

1
有趣的方式!顺便说一下,SO 的讲话很棒 :) - alecxe

4

将文本以,为分隔符进行切割,并映射为int()类型:

map(int, inputstring.split(','))

这将产生一个列表;如果您需要一个元组,请将其包装在tuple()函数中:

tuple(map(int, inputstring.split(',')))

在Python 3中,map()返回一个生成器,因此您需要使用列表推导式来生成列表:
[int(el) for el in inputstring.split(',')]

演示:

>>> inputstring = '1,-2,3,4,-5'
>>> map(int, inputstring.split(','))
[1, -2, 3, 4, -5]
>>> tuple(map(int, inputstring.split(',')))
(1, -2, 3, 4, -5)

1
另一种方式:

>>> inputlist = '1,-2,3,4,-5'
>>> tuple(int(x) for x in inputlist.split(','))
(1, -2, 3, 4, -5)
>>>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接