如果我有一个列表,如
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()'功能但它没有用。
谢谢。
答案 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)
通常使用try
和except
作为算法的一部分,而不仅仅是错误处理,这是一种不好的做法,因为它们效率不高。但是,在这种情况下,很难预测int()
或float()
可以成功处理的所有可能输入,因此try
方法是合理的。