['10019', 'Airma25KLOS', 'Juridinis', 'LT', '121979631', 'LT219796314', '2410', '25', '26', '3232', '32131']
在此列表中,每个项目都是一个字符串,我怎么能从该列表中得到相同顺序的相同列表,而不是现在是字符串的整数(如10019''121979631'等),以整数形式返回?
我的目标是使列表看起来像这样
[10019, 'Airma25KLOS', 'Juridinis', 'LT', 121979631, 'LZ219796314', 2410, 25, 26, 3232, 32131]
如果字母和数字混合在一起,则应像LZ219796314'这样的字符串形式保留下来
答案 0 :(得分:8)
该字符串适用于任何有效表示整数的字符串(无论是正数还是负数)。但这并不是说不能与浮点数一起使用。
def to_int(s):
try:
return int(s)
except (TypeError, ValueError) as e:
return s
result = [to_int(s) for s in your_list]
答案 1 :(得分:7)
您可以对.isdigit
使用以下列表推导,以便仅将数字字符串转换为int
:
l = ['10019', 'Airma25KLOS', 'Juridinis', 'LT', '121979631',
'LT219796314', '2410', '25', '26', '3232', '32131']
[int(i) if i.lstrip('-').isdigit() else i for i in l]
# [10019, 'Airma25KLOS', 'Juridinis', 'LT', 121979631, 'LT219796314',
# 2410, 25, 26, 3232, 32131]
答案 2 :(得分:3)
使用此代码。在负整数以及float等情况下,它可以正常工作。
代码:
def is_number(s):
try:
float(s)
return True
except ValueError:
pass
try:
import unicodedata
unicodedata.numeric(s)
return True
except (TypeError, ValueError):
pass
return False
l = ['10019', 'Airma25KLOS', 'Juridinis', 'LT', '121979631',
'LT219796314', '2410', '-25', '26', '3232', '32131']
print([int(i) if is_number(i) else i for i in l])
输出:
[10019, 'Airma25KLOS', 'Juridinis', 'LT', 121979631, 'LT219796314', 2410, -25, 26, 3232, 32131]
答案 3 :(得分:2)
您可以使用正则表达式检查字符串是否为整数:
import re
p = re.compile(r'[+-]?\d+')
[int(i) if p.fullmatch(i) else i for i in l]
答案 4 :(得分:1)
您可以尝试一下:
l=['-10019', 'Airma25KLOS', 'Juridinis', 'LT', '121979631', 'LT219796314', '2410', '25', '26', '3232', '32131']
a=[]
for item in l:
try:
a.append(int(item))
except:
a.append(item)
我不确定这是否是最好的方法,但这适用于所有整数(正数和负数)