2017-05-24 5 views
1

私は以下のような長い文字列リストを持つデータを持っていますが、型をINTに変更したいのですが、いくつかの文字列には特殊文字: "x"、 "。"、 "..."を文字列として保持します。誰かが私に文字列をフィルタリングするのを手伝ってもらえるように、文字列の文字列をフィルタリングする方法には特殊文字がありますか?

一覧:

Type Values 
str 1 
str 1 
str 1 
str 1 
str 0 
str 10.0.0.21 
float nan 
str 0 
str 38082 
str -10 
str -12 
str 0xE0020000 

期待タイプ:

Type Values 
Int 1 
Int 1 
Int 1 
Int 1 
Int 0 
Str 10.0.0.21 
Float nan 
Int 0 
Int 38082 
Int -10 
Int -12 
Str 0xE0020000 

答えて

1

文字列のリストを考えると、あなたはリストを横断することができますし、intにすべての数値をキャスト:

input_values = ['1', '1', '1', '1', 
       '0', '10.0.0.21', 
       float('nan'), '0', '38083'] 

def cast_to_int(word): 
    if type(word) == str and word.isnumeric(): 
     return int(word) 

    return word 

list(map(cast_to_int, input_values)) 

更新:

input_valuesに負の値がある場合は、次の解決策を使用する必要があります。

def cast_to_int(word): 
    try: 
     return int(word) 
    except ValueError: 
     return word 

list(map(cast_to_int, input_values)) 
+0

多くのおかげです。それは動作しますが、私のデータリストには負の数があります:-12、-10 ... Currenly、型も文字列に変わります。それをIntとして保持する方法は? – NguyenTram

+1

ご協力いただきありがとうございます。それは本当に動作します:) – NguyenTram

+0

ありがとう。私はすでに受け入れています。 – NguyenTram

関連する問題