検索

ホームページ  >  に質問  >  本文

Python 字符串转数字

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_leeringa_lee2796日前967

全員に返信(3)返信します

  • 阿神

    阿神2017-04-17 14:36:24

    リーリー

    返事
    0
  • PHP中文网

    PHP中文网2017-04-17 14:36:24

    リーリー

    向け

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

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

    リーリー

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

    リーリー

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

    返事
    0
  • PHPz

    PHPz2017-04-17 14:36:24

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

    リーリー

    返事
    0
  • キャンセル返事