質問

次のようなリストがあります:

['batting average', '306', 'ERA', '1710']

文字列に触れずに目的の数値を変換するにはどうすればよいですか

助けてくれてありがとう。

役に立ちましたか?

解決

changed_list = [int(f) if f.isdigit() else f for f in original_list]

他のヒント

データは、数字がどの位置にあるかを知っているように見えます。この場合、数字のように見えるものを単に変換するのではなく、これらの位置でデータを明示的に変換することをお勧めします。

ls = ['batting average', '306', 'ERA', '1710']
ls[1] = int(ls[1])
ls[3] = int(ls[3])

これを試してください:

def convert( someList ):
    for item in someList:
        try:
            yield int(item)
        except ValueError:
            yield item

newList= list( convert( oldList ) )
a= ['batting average', '306', 'ERA', '1710.5']

[f if sum([c.isalpha() for c in f]) else float(f) for f in a ]

リストにfloat、string、intが含まれている場合(コメントの@ d.puttoで示されているとおり)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top