从html表单中获取整数

时间:2012-10-03 00:48:08

标签: python html

我想从HTML表单中获取整数值,并使用以下python代码:

    form = cgi.FieldStorage()
    if not form.has_key("id"):
        error_pop("There is no id in this form","The format of the request is not correct")
    id = form["id"].value    (*)

在HTML文件中,我将输入类型设为number

id: <input type="number" name="id" /><br />

然而,似乎我从行(*)得到的id仍然是一个字符串。

如何将其转换为整数?

我尝试使用int(form["id"].value),但是python给了我以下错误:

  

<type 'exceptions.TypeError'>:%d格式:需要一个数字,而不是str args =('%d格式:需要一个数字,而不是str')message ='%d格式:需要一个数字,不是str'

所以,我放弃了使用int()

如果我在将值解析为int()之前尝试打印该值,那么我将从浏览器中获取内部服务器错误。实际上,如果我在python文件中更改了某些内容,我总是会收到此错误。我可以从error_log.log中看到错误:

/usr/lib/python2.6/cgitb.py:173: DeprecationWarning: BaseException.message has been deprecated as of Python 2.6
value = pydoc.html.repr(getattr(evalue, name))

实际上,如果我今天从error.log中获取时间,那么它就无法显示当前的错误。尽管它确实退出了几个小时前发生的错误......

我找到了新的东西:只有当事情涉及“id”时,才会出现内部服务器错误。如果我执行类似id = form["idid"].value的操作,则会出现错误:

<type 'exceptions.TypeError'>: int() argument must be a string or a number, not 'NoneType' 
      args = ("int() argument must be a string or a number, not 'NoneType'",) 
      message = "int() argument must be a string or a number, not 'NoneType'"

感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

我遇到了同样的问题,无法将表单中的值转换为数字。这是我改编自this blog post的另一个解决方案。我从名为q1,q2,q3等的单选按钮集返回了一些值,并使用这个字典进行转换。

WebElement templateFound = driver.findElement(By.linkText("Main"));

表单元素的值&#34; q1&#34;是数字的字符串形式,因此将其转换为数字形式。和你一样, str2num = {"1":1, "2":2, "3":3, "4":4, "5":5, "6":6} val1 = str2num[ form.getvalue("q1") ] val2 = str2num[ form.getvalue("q2") ] val3 = str2num[ form.getvalue("q3") ] 只是没有工作。我仍然不知道为什么会这样。

答案 1 :(得分:0)

该元素的值似乎是form,您传递给int的是从http服务器返回的错误消息:
 “%d格式:需要一个数字,而不是str”
为了论证,你可以尝试相同的事情,而不是将 id 字段限制为type =“number”,但是键入=“text”。我的猜测是,这将允许转换为整数。 如果您需要将结果强制为整数,请使用类似

的内容
while not id:
  try:
    id = int(form["id"].value)
  except TypeError:
    error_pop("id should be number")