如何在列表中将str数字转换为int类型?

2024-09-30 08:23:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我是python/python3的新手,正在尝试解决以下问题

我有一个包含以下数据的列表:

datalist = ['1','2','abc','def','a234','b456']

print(type(new_datalist[0]))

print(type(new_datalist[1]))

<class 'str'>

<class 'str'>

有没有办法即兴制作数据列表,使列表中的数字从当前的str类型转换为int?

期望的结果:

new_datalist = []

print(new_datalist)

[1, 2 ,'abc','def','a234','b456']


print(type(new_datalist[0]))

print(type(new_datalist[1]))

<class 'int'>

<class 'int'>

Tags: 数据列表newdeftypepython3classint
3条回答

试试这个-

d = [int(i) if i.isnumeric() else i for i in datalist]
print(d)
[1, 2 ,'abc','def','a234','b456']

请参阅类型-

[type(i) for i in d]
[int, int, str, str, str, str]

您可以使用列表理解来优雅地解决您的问题

datalist = [int(data) if data.isdigit() else data for data in datalist]

在可能的情况下,您可以创建一个转换为int的函数:

def int_or_str(s):
    "try to convert to int, but return string if it fails"
    try:
        return int(s)
    except ValueError:
        return s

new_datalist = [int_or_str(s) for s in datalist]

或者,如果您喜欢一行,您必须这样做,以考虑负数的可能性:

new_datalist = [int(s)  
                if s.isnumeric() or (s and s[0] == '-' and s[1:].isnumeric())
                else s
                for s in datalist]

也可以使用正则表达式:

import re

new_datalist = [int(s) if re.match('-?\d+$', s) else s for s in datalist]

相关问题 更多 >

    热门问题