39000


Python 3 で、リストに含まれている負数の数字をint型として格納したい。  
isdecimalは負数に対応してないということで、以下のようにして正規表現を用いて負の値を操作したのですが、他にいい方法があるのではと思い質問しました。

[code]

    import re
    s = 'ADD 3 -11'.split()
    
    r = re.compile(r'-?\d')
    for i in range(len(s)):
        try:
            if r.search(s[i]):
                s[i] = int(s[i])
        except ValueError:
            pass
    print(s)
    
[/code]


CC BY-SA 3.0
2017-10-24T10:12:09.553
38998
2017-10-25T00:05:37.407
2017-10-24T10:16:12.793
19110
25679
question
python python3
Python 3 で、文字列と整数が混在するリストから負数をint型で取得したい


何を「文字列」や「整数」として扱うかにもよりますが、最終的に `int()` を使うのであれば、最初から `int()`
を使ってみてエラーが出るかどうかで分岐する方法があります。

[code]

    >>> s = 'STRING 3 -11 +2 3.14 5.0 0xFF 00101100'.split()
    >>> s
    ['STRING', '3', '-11', '+2', '3.14', '5.0', '0xFF', '00101100']
    >>> for i in range(len(s)):
    ...   try:
    ...     s[i] = int(s[i])
    ...   except ValueError:
    ...     pass
    ... 
    >>> s
    ['STRING', 3, -11, 2, '3.14', '5.0', '0xFF', 101100]
    
[/code]

厳密にどういう文字列が整数値に変換されるのかについては、[`int()`
のマニュアル](https://docs.python.jp/3/library/functions.html#int)をご覧ください。


CC BY-SA 3.0
2017-10-24T10:33:13.890
39000
2017-10-25T00:05:37.407
2017-10-25T00:05:37.407
19110
19110
38998
answer