python中的字符串到Int转换

时间:2013-05-04 18:13:19

标签: python string integer

如果我有一个字符串“2 + 3”,无论如何将它转换为整数,所以它是5?

我试过了:

string = 2+3
answer = int(string)

但是我收到了一个错误:

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

我正在尝试使用完全括号的方程式并使用堆栈来回答它。

离。等式=((2 + 3) - (4 * 1))

我尝试将等式作为输入,但是python只是自己解决了这个问题。 所以为了避免这个问题,我将方程式作为raw_input。

2 个答案:

答案 0 :(得分:1)

有一种方式,eval功能..

>>> x = raw_input()
2 + 6
>>> x
'2 + 6'
>>> eval(x)
8

但一定要确认输入只有数字和符号。

>>> def verify(x):
    for i in x:
        if i not in '1234567890.+-/*%( )':
            return False
    return True

>>> x = raw_input()
2 + 6
>>> x
'2 + 6'
>>> if verify(x):
    print eval(x)
8

ast.literal_eval不起作用:

>>> ast.literal_eval('2+3')

Traceback (most recent call last):
  File "<pyshell#1>", line 1, in <module>
    ast.literal_eval('2+3')
  File "C:\Python2.7 For Chintoo\lib\ast.py", line 80, in literal_eval
    return _convert(node_or_string)
  File "C:\Python2.7 For Chintoo\lib\ast.py", line 79, in _convert
    raise ValueError('malformed string')
ValueError: malformed string

答案 1 :(得分:0)

使用eval(并记住清理您的输入。如果您阅读文档,请参阅更多内容):

>>> eval('2+3')
5

它甚至支持变量:

>>> x = 1
>>> eval('x+1')
2