2017-08-29 4 views
0

私はリストl = ['1','2','3','rt4','rt5']を持っています。 int型の数値を変換し、そのまま残ります。整数部分をintに変換し、文字列をそのまま保持する

所望の出力:)ORD(:

m = [1, 2, 3, 'rt4', 'rt5'] 

私はそれが私に次のエラー 」はTypeErrorを得、以下のように

ORD(M [ 'RT4'])

を試し文字を期待しますが、長さ3の文字列は」

+1

質問の下に[編集]ボタンがあります。追加情報であなたの質問を編集してください。 –

+0

あなたが編集している間に、あなたが試したこととその問題が[mcve]のように正確に示されるべきです。 – jonrsharpe

答えて

0

それが必要な作品が見つかりました:

を3210
l = ['1','2','3','rt4','rt5'] 
def reformater(din): 
    try: 
     return int(din) 
    except Exception: 
     return din 
s = [reformater(i) for i in l] 
0

組み込みのint()関数を使用すると、文字列を整数に変換できます。入力文字列が有効な整数でない場合、この関数は例外をスローします。その場合は、try..catch statementを使用して未変更の入力を返すことができます。

l = ['1','2','3','rt4','rt5'] 
def try_to_int(s): 
    try: 
     return int(s) 
    except: 
     return s 
m = [try_to_int(it) for it in l] 
print(m) 

int()は、しかし、あなたが望むよりも有効な整数としてより多くのフォーマットを受け入れる可能性があるので、あなたはまた、明示的に整数を検証することができます。

+0

ありがとう@millimoose。これは私を助けた – maverick

0
def RepresentsInt(s): 
    try: 
     int(s) 
     return True 
    except ValueError: 
     return False 
l=['1','2','3','rt4','rt5'] 
l=[int(l[i]) if RepresentsInt(l[i]) else l[i] for i in range(0,len(l))] 

intをチェックする機能です。

OR

l=['1','2','3','rt4','rt5'] 
l=[int(i) if i.isdigit() else i for i in l] 

だけ()組み込み関数をisdigitを使用。

関連する問題