0

こんにちは、情報を検索するスクリプトがあり、情報は整数であると想定されていますが、空の文字列を見つけて、次のエラーが発生することがあります。

ValueError: invalid literal for int() with base 10: ''

私は次のことをしようとしていましたが、うまくいきません。

list = ['12', '14', '45', ''] 

for i in list:
    if '' in i:
        i = 0
        i
    else:
        i

これなら何でも合います。別の方法である必要があり、ソースを編集する方法はありません。ありがとう

4

5 に答える 5

1

list変数名として使用しないでください。遅かれ早かれ、建物を使用してlist奇妙なバグを取得したいと思うでしょう:)

my_list = ['12', '14', '45', ''] 

for i in my_list:
    if not i:
        # i is empty string
    else:
        # ...

あなたが示したエラーは、あなたが使用しようとしている他の場所からのものだと思いますint(i)

iに変換することになっている場合int、それを行う1つの方法は次のとおりです

for i in my_list:
    if not i:
        i = 0
    else:
        i = int(i)

別の方法は、例外ハンドラを使用することです

for i in my_list:
    try:
        i = int(i)
    except ValueError:
        i = 0
于 2013-01-29T04:16:09.283 に答える
1

簡単ですが効果的な方法は、そのエラーをキャッチして無視することです。値の「真偽」を確認することもできます。

mylist = ['12', '14', '45', '']
outlist = []

for s in mylist:
    if s:
        try:
            i = int(s)
        except ValueError:
            continue

        else:
            outlist.append(i)

これにより、他の種類の数値以外の入力からも保護されます。

于 2013-01-29T04:17:10.253 に答える
0

多分あなたは次のようなものを探していると思います

import string
list = ['12', '14', '45', '', '1 3']

for i in list:
    if i == '':
        i = 0
        print i
    elif ' ' in i:
        i = string.replace(i, ' ', '')
        print i
    else:
        print i
于 2013-01-29T04:23:53.800 に答える
0

このコードは、リスト内のすべての要素を取得し、空白の要素を除外します。

mylist =  ['1','2','3','4','','','6','7']

for x in mylist:
    if x:
        print x
    else:
        pass # x is empty

inの代わりに使用しているため、メソッドはおそらく失敗していますis

また、キーワードlistを上書きするので、リストに名前を付けないでください。list

于 2013-01-29T04:16:39.060 に答える
0

これが欲しいようです:

for i in lst:
    if i == "":
        i = 0
    else:
        i = int(i)

    # do stuff with an iteger i here
于 2013-01-29T04:16:45.083 に答える