在python中将列表的特定元素从字符串更改为整数

时间:2016-09-26 01:00:00

标签: python string list

如果我有一个列表,如

c=['my', 'age', 'is', '5\n','The', 'temperature', 'today' 'is' ,'87\n']

我如何专门将列表的数字转换为整数,并保留字符串的其余部分并删除\ n?

预期产出:

`c=['my', 'age', 'is', 5,'The', 'temperature', 'today' 'is' ,87]`

我尝试使用' map()'和' isdigit()'功能但它没有用。

谢谢。

2 个答案:

答案 0 :(得分:0)

您可以编写一个尝试转换为int的函数,如果失败则返回原始函数,例如:

def conv(x):
    try:
        x = int(x)
    except ValueError:
        pass
    return x

>>> c = ['my', 'age', 'is', '5\n','The', 'temperature', 'today' 'is' ,'87\n']
>>> list(map(conv, c))
['my', 'age', 'is', 5, 'The', 'temperature', 'todayis', 87]
>>> [conv(x) for x in c]
['my', 'age', 'is', 5, 'The', 'temperature', 'todayis', 87]

注意:由空格分隔的2个字符串由python自动连接,例如'today' 'is'相当于'todayis'

答案 1 :(得分:0)

如果你不知道文本中整数的格式,或者变化太多,那么一种方法就是在所有内容上尝试int(),看看成功或失败的原因:

original = ['my', 'age', 'is', '5\n', 'The', 'temperature', 'today', 'is', '87\n']
revised = []

for token in original:
    try:
        revised.append(int(token))
    except ValueError:
        revised.append(token)

print(revised)

通常使用tryexcept作为算法的一部分,而不仅仅是错误处理,这是一种不好的做法,因为它们效率不高。但是,在这种情况下,很难预测int()float()可以成功处理的所有可能输入,因此try方法是合理的。