python - 在这个 python 代码中产生 "TypeError character mapping must return integer..."是什么?

标签 python google-app-engine typeerror

请问有人可以帮我写下面的代码吗? 当我运行它时,日志说:

return method(*args, **kwargs)
  File "C:\Users\CG\Documents\udacity\rot13serendipo\main.py", line 51, in post
    text = rot13(text)
  File "C:\Users\CG\Documents\udacity\rot13serendipo\main.py", line 43, in rot13
    return st.translate(tab)
TypeError: character mapping must return integer, None or unicode
   INFO     2012-04-28 20:02:26,862 dev_appserver.py:2891] "POST / HTTP/1.1" 500 -

我知道错误一定是在 rot13() 中。但是当我在 IDE 中运行此过程时,它可以正常工作。

这是我的代码:

import webapp2

form= """
  <html>
  <head>
    <title>Unit 2 Rot 13</title>
  </head>

  <body>
    <h2>Enter some text to ROT13:</h2>
    <form method="post">
      <textarea name="text"
                style="height: 100px; width: 400px;"></textarea>
      <br>
      <input type="submit">
    </form>
  </body>

  </html> """

def rot13(st):
    import string
    tab1 = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
    tab2 = 'nopqrstuvwxyzabcdefghijklmNOPQRSTUVWXYZABCDEFGHIJKLM'
    tab = string.maketrans(tab1, tab2)
    return st.translate(tab)

class MainHandler(webapp2.RequestHandler):
    def get(self):
        self.response.out.write(form)

    def post(self):
        text = self.request.get("text")
        text = rot13(text)
        self.response.out.write(text)


app = webapp2.WSGIApplication([('/', MainHandler)],
                          debug=True)

提前感谢您的帮助!

最佳答案

这可能是因为文本是作为 unicode 输入的:

>>> def rot13(st):
...     import string
...     tab1 = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
...     tab2 = 'nopqrstuvwxyzabcdefghijklmNOPQRSTUVWXYZABCDEFGHIJKLM'
...     tab = string.maketrans(tab1, tab2)
...     return st.translate(tab)
... 
>>> rot13('test')
'grfg'
>>> rot13(u'test')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 6, in rot13
TypeError: character mapping must return integer, None or unicode
>>> 

这个问题涵盖了你需要什么:

如果您确定 unicode 字符串不重要,我想您可以:

return str(st).translate(tab)

关于python - 在这个 python 代码中产生 "TypeError character mapping must return integer..."是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10367302/

相关文章:

node.js - 在单独的函数中进行类型检查在 typescript 中不起作用

python - 如何模拟 boto3 客户端对象/调用

python - 使用 scipy.integrate.odeint 时如何正确实现时间相关变量

python - 如何在 Python 中访问由标签结构化的数据?

google-app-engine - Google App Engine : appcfg. py 回滚

javascript - JS : "TypeError: ' undefined' is not an object"

python - NumPy 可以直接将数据加载到 Fortran 有序数组中吗?

java - GAE JSF 表单标签错误?

python - 对于应用程序的用户,以 "easy"的方式将数据导入 Google App Engine

python Mechanize 表单登录给出TypeError