什么是生成“TypeError字符映射必须返回整数...”在这个Python代码? [英] What is producing "TypeError character mapping must return integer..." in this python code?

查看:93
本文介绍了什么是生成“TypeError字符映射必须返回整数...”在这个Python代码?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

  return method(* args,** kwargs)
文件C:\ Users \CG\Documents\udacity\rot13serendipo\main.py,第51行,在后
text = rot13(文本)
文件C:\\ \\ User \CG\Documents\udacity\rot13serendipo\main.py,第43行,在rot13
返回st.translate(tab)
TypeError:字符映射必须返回整数,None或unicode
INFO 2012-04-28 20:02:26,862 dev_appserver.py:2891]POST / HTTP / 1.1500 -

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



这里是我的代码:

  import webapp2 

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

< body>
< h2>向ROT13输入一些文本:< / h2>
< form method =post>
< textarea name =text
style =height:100px;宽度:400px;>< / textarea>
< br>
< input type =submit>
< / form>
< / body>

< / html>

def rot13(st):
导入字符串
tab1 ='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
tab2 ='nopqrstuvwxyzabcdefghijklmNOPQRSTUVWXYZABCDEFGHIJKLM'
tab = string.maketrans(tab1,tab2)
返回st.translate(标签)

class MainHandler(webapp2.RequestHandler):$ b $ (self):
self.response.out.write(form)

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


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

感谢您的帮助!

解决方案

这可能是因为文本正在进入作为unicode:

 >>> def rot13(st):
...导入字符串
... tab1 ='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
... tab2 ='nopqrstuvwxyzabcdefghijklmNOPQRSTUVWXYZABCDEFGHIJKLM'
... tab = string。 maketrans(tab1,tab2)
... return st.translate(tab)
...
>>> rot13('test')
'grfg'
>>> rot13(u'test')
Traceback(最近一次调用最后一次):
在< module>中,第1行的文件< stdin>
文件stdin>,第6行,在rot13
TypeError:字符映射必须返回整数,无或unicode
>>>

这个问题涵盖了您需要的内容:



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

$ $ p $ code $ return str(st).translate(tab)


please, can someone help me with the code bellow? When I run it the logs said:

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 -

I know the error must be in rot13(). But when I run this procedure in the IDE it works normally.

Here my code:

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)

Thanks in advance for any help!

解决方案

It's probably because the text is being entered as 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
>>> 

This question covers what you need:

If you are sure that unicode strings aren't important I guess you could just:

return str(st).translate(tab)

这篇关于什么是生成“TypeError字符映射必须返回整数...”在这个Python代码?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆