Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python ValueError:转换表的长度必须为256个字符_Python_String_Python 2.7 - Fatal编程技术网

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

Python ValueError:转换表的长度必须为256个字符,python,string,python-2.7,Python,String,Python 2.7,我有一个PythonFlask项目程序,在这个程序中,我将带有大写字母和标点符号的用户输入字符串转换为不带大写字母和标点符号的字符串。运行程序时,我发现以下错误: ValueError:转换表的长度必须为256个字符 回溯最近调用的最后一个文件: /home/sd18656/.local/lib/python2.7/site-packages/flask/app.py,第行 2463,在调用返回self.wsgi\u appenviron中,启动响应文件 /home/sd18656/.local

我有一个PythonFlask项目程序,在这个程序中,我将带有大写字母和标点符号的用户输入字符串转换为不带大写字母和标点符号的字符串。运行程序时,我发现以下错误:

ValueError:转换表的长度必须为256个字符 回溯最近调用的最后一个文件: /home/sd18656/.local/lib/python2.7/site-packages/flask/app.py,第行 2463,在调用返回self.wsgi\u appenviron中,启动响应文件 /home/sd18656/.local/lib/python2.7/site-packages/flask/app.py,第行 2449,在wsgi_app response=self.handle_exceptionone文件中 /home/sd18656/.local/lib/python2.7/site-packages/flask/app.py,第行 1866年,在handle_异常reraiseexc_类型中,exc_值,tb文件 /home/sd18656/.local/lib/python2.7/site-packages/flask/app.py,第行 2446,在wsgi_app response=self.full_dispatch_请求文件中 /home/sd18656/.local/lib/python2.7/site-packages/flask/app.py,第行 1951年,在完整的\u分派\u请求rv=self.handle\u用户\u例外文件中 /home/sd18656/.local/lib/python2.7/site-packages/flask/app.py,第行 1820,在handle_user_异常reraiseexc_类型中,exc_值,tb文件 /home/sd18656/.local/lib/python2.7/site-packages/flask/app.py,第行 1949年,在完整的调度请求rv=self.dispatch请求文件中 /home/sd18656/.local/lib/python2.7/site-packages/flask/app.py,第行 1935年,在派遣请求返回中 self.view_函数[rule.endpoint]**req.view_参数文件 /home/sd18656/FlaskProject/mainapp.py,第61行,在家得分, 总处理数据=获取抽象文件 /home/sd18656/FlaskProject/mainapp.py,第32行,在get_得分中 抽象=抽象.translatestring.标点符号.lower 在程序中,抽象是字符串类型。我遇到了这个解决方案:但是,对于错误,string.maketrans似乎与lower或upper不匹配。如何解决此问题

导致此问题的代码段如下所示:

r = reader(open('mycsv.csv','r'))
abstract_list = []
score_list = []
institute_list = []
row_count = 0
for row in list(r)[1:]:
    institute,score,abstract = row[0], row[1], row[2]
    if len(abstract.split()) > 0:
      institute_list.append(institute)
      score = float(score)
      score_list.append(score)
      abstract = abstract.translate(string.punctuation).lower()
      abstract_list.append(abstract)
      row_count = row_count + 1
mycsv.csv的内容如下:

r = reader(open('mycsv.csv','r'))
abstract_list = []
score_list = []
institute_list = []
row_count = 0
for row in list(r)[1:]:
    institute,score,abstract = row[0], row[1], row[2]
    if len(abstract.split()) > 0:
      institute_list.append(institute)
      score = float(score)
      score_list.append(score)
      abstract = abstract.translate(string.punctuation).lower()
      abstract_list.append(abstract)
      row_count = row_count + 1

您需要将转换表传递给Python 2中的str.translate string.translate。翻译表只是一个dict,其中key是搜索字符,value是替换字符,key和value是各个字符的ord

例如,如果要用空格替换所有标点符号,请执行以下操作:

从字符串导入标点符号 transtable=string.makeTranspuncuation,'*lensportation 抽象=抽象.translatetranstable.lower 以下是概念证明:

>>>从字符串导入标点符号 >>>transtable=string.makeTranspuncuation,'*lensportation >>>类型转换表 >>>“这个!isa.string,带;标点符号:'.translatetranstable.lower '这是一个带有标点符号的字符串' >>> 下面是maketrans和translate的另一个用法示例,只是为了好玩:

>>>elite=string.maketrans'aeiou','4310v' >>>“黑客规则”,translateLite “H4ck3rs Rvl3z” >>>
请添加实际生成错误的代码。我们还需要文件“mycsv.csv”@chepner我已经添加了代码片段。谢谢。请先使用string.maketrans函数translate@ManishGupta实际上,我尝试使用string.maketrans,但是,即使在它提到的python文档中:不要使用从小写和大写派生的字符串作为参数;在某些地区,它们的长度不同。对于大小写转换,请始终使用str.lower和str.upper。谢谢您的回答。实际上str适用于Python3,但不适用于Python2,并抛出错误。因为最初的答案是基于Python2的,所以我将它改为string而不是str。哦!我懂了。我完全错过了Python版本。如果你不介意的话,请继续再编辑一次。