为了账号安全,请及时绑定邮箱和手机立即绑定

ValueError: 转换表的长度必须为 256 个字符

ValueError: 转换表的长度必须为 256 个字符

慕妹3242003 2022-07-05 19:04:19
我有 python 烧瓶项目(程序),我将用户输入的带有大写字母和标点符号的字符串转换为没有它们的字符串。当我运行程序时,我收到以下错误:ValueError: translation table must be 256 characters long Traceback (most recent call last) File:"/home/sd18656/.local/lib/python2.7/site-packages/flask/app.py", line2463, in __call__ return self.wsgi_app(environ, start_response) File"/home/sd18656/.local/lib/python2.7/site-packages/flask/app.py", line2449, in wsgi_app response = self.handle_exception(e) File"/home/sd18656/.local/lib/python2.7/site-packages/flask/app.py", line1866, in handle_exception reraise(exc_type, exc_value, tb) File"/home/sd18656/.local/lib/python2.7/site-packages/flask/app.py", line2446, in wsgi_app response = self.full_dispatch_request() File"/home/sd18656/.local/lib/python2.7/site-packages/flask/app.py", line1951, in full_dispatch_request rv = self.handle_user_exception(e) File"/home/sd18656/.local/lib/python2.7/site-packages/flask/app.py", line1820, in handle_user_exception reraise(exc_type, exc_value, tb) File"/home/sd18656/.local/lib/python2.7/site-packages/flask/app.py", line1949, in full_dispatch_request rv = self.dispatch_request() File"/home/sd18656/.local/lib/python2.7/site-packages/flask/app.py", line1935, in dispatch_request returnself.view_functions[rule.endpoint](**req.view_args) File"/home/sd18656/FlaskProject/mainapp.py", line 61, in home score,total_processed_data = get_score(abstract) File"/home/sd18656/FlaskProject/mainapp.py", line 32, in get_scoreabstract = abstract.translate(string.punctuation).lower()在程序中,abstract 是一个字符串类型。我遇到了这个解决方案:string.translate 函数中的“表”是什么意思?但是,对于该错误,orstring.maketrans似乎并不顺利。我该如何解决这个问题?lower()upper()
查看完整描述

1 回答

?
三国纷争

TA贡献1804条经验 获得超7个赞

您需要将转换表传递给str.translate(string.translate在 Python 2 中)。翻译表无非是一个dictwherekey是搜索字符并且value是替换字符, wherekey和value是ord()各个字符的 the。


例如,如果您想punctuation用空格替换所有字符,请执行以下操作:


from string import punctuation

transtable = string.maketrans(punctuation, ' ' * len(punctuation))


abstract = abstract.translate(transtable).lower()

这是一个概念证明:


>>> from string import punctuation

>>> transtable = string.maketrans(punctuation, ' ' * len(punctuation))

>>> type(transtable)

<class 'dict'>

>>> 'This!is#a.string,with;punctuations:'.translate(transtable).lower()

'this is a string with punctuations '

>>> 

这是maketrans和的另一个用法示例translate(只是为了好玩):


>>> elite = string.maketrans('aeiou', '4310v')

>>> 'Hackers Rulez'.translate(elite)

'H4ck3rs Rvl3z'

>>> 


查看完整回答
反对 回复 2022-07-05
  • 1 回答
  • 0 关注
  • 196 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号