Python 字符串转数字
ringa_lee
ringa_lee 2017-04-17 14:34:24
0
3
964

python自带的int函数在值中出现字符串的情况下会出现错误

python>>> int('232d')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: '232d'

而js中parseInt则不会出现类似问题

javascriptvar num = parseInt('2323d')
num == 2323

那么,如何用python实现一个类似js的parseInt函数(尽量不用正则)

下面是我实现的一个,但是有没有更好的方法

pythondef safe_int(num):
    try:
        return int(num)
    except ValueError:
        result = []
        for c in num:
            if not ('0' <= c <= '9'):
                break
            result.append(c)
        if len(result) == 0:
            return 0
        return int(''.join(result))
ringa_lee
ringa_lee

ringa_lee

全員に返信(3)
阿神

リーリー

いいねを押す +0
Ty80

リーリー

向け

ありがとうございます。ただし、「234jdsf23232ks」は 23423232 に変換されますが、これは望ましい結果ではありません

この場合、元の質問をもう一度見てみましょう。実際、元の質問の重要な点は、「数字ではない最初の文字の位置を見つける」という単純な問題を剥がすことです。文字列 "。

リーリー

この場所を見つけたら、スライス関数と int メソッドを使用してタスクを完了します。

リーリー

アイデアは質問と似ています ^-^

いいねを押す +0
PHPzhong

itertools の宝物から拝借すると、コアのコードは 1 つの文にあります。
takewhile 条件を満たす要素のイテレータを先頭に返します。

リーリー
いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート