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
则不会出现类似问题
javascript
var num = parseInt('2323d') num == 2323
那么,如何用python实现一个类似js的parseInt
函数(尽量不用正则)
下面是我实现的一个,但是有没有更好的方法
python
def 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))
PHP中文网2017-04-17 14:36:24
リーリー
向け
ありがとうございます。ただし、「234jdsf23232ks」は 23423232 に変換されますが、これは望ましい結果ではありません
この場合、元の質問をもう一度見てみましょう。実際、元の質問の重要な点は、「数字ではない最初の文字の位置を見つける」という単純な問題を剥がすことです。文字列 "。
リーリーこの場所を見つけたら、スライス関数と int メソッドを使用してタスクを完了します。
リーリーアイデアは質問と似ています ^-^
PHPz2017-04-17 14:36:24
itertools
の宝物から拝借すると、コアのコードは 1 つの文にあります。 takewhile
条件を満たす要素のイテレータを先頭に返します。