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

我有 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", line

2463, in __call__ return self.wsgi_app(environ, start_response) File

"/home/sd18656/.local/lib/python2.7/site-packages/flask/app.py", line

2449, in wsgi_app response = self.handle_exception(e) File

"/home/sd18656/.local/lib/python2.7/site-packages/flask/app.py", line

1866, in handle_exception reraise(exc_type, exc_value, tb) File

"/home/sd18656/.local/lib/python2.7/site-packages/flask/app.py", line

2446, in wsgi_app response = self.full_dispatch_request() File

"/home/sd18656/.local/lib/python2.7/site-packages/flask/app.py", line

1951, in full_dispatch_request rv = self.handle_user_exception(e) File

"/home/sd18656/.local/lib/python2.7/site-packages/flask/app.py", line

1820, in handle_user_exception reraise(exc_type, exc_value, tb) File

"/home/sd18656/.local/lib/python2.7/site-packages/flask/app.py", line

1949, in full_dispatch_request rv = self.dispatch_request() File

"/home/sd18656/.local/lib/python2.7/site-packages/flask/app.py", line

1935, in dispatch_request return

self.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_score

abstract = abstract.translate(string.punctuation).lower()

在程序中,abstract 是一个字符串类型。我遇到了这个解决方案:string.translate 函数中的“表”是什么意思?但是,对于该错误,orstring.maketrans似乎并不顺利。我该如何解决这个问题?lower()upper()

http://img.mukewang.com/62c41acc0001357702020180.jpg


慕妹3242003
浏览 197回答 1
1回答

三国纷争

您需要将转换表传递给str.translate(string.translate在 Python 2 中)。翻译表无非是一个dictwherekey是搜索字符并且value是替换字符, wherekey和value是ord()各个字符的 the。例如,如果您想punctuation用空格替换所有字符,请执行以下操作:from string import punctuationtranstable = 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 '>>>&nbsp;这是maketrans和的另一个用法示例translate(只是为了好玩):>>> elite = string.maketrans('aeiou', '4310v')>>> 'Hackers Rulez'.translate(elite)'H4ck3rs Rvl3z'>>>&nbsp;
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python