tornado获取表单后字符处理byte格式转换与分割

前景:做tornado和h5结合的实验中,遇到这个问题,

 files = self.request.files
        people_file = files.get('people')#get file
        #data = people_file['body']
        bstr = people_file[0]['body']
        #--------------test output---------
        #print(bstr) #b'jasion\r\nkenny\r\njendall.....'
        #print(type(bstr)) #<class 'bytes'>
        #data = str(people_file[0]['body'],'utf-8') -> error
        #decode() ->error
        data = str(bstr) 
        name = data.split('\r\n')
        res = []
        print("name:",name)  #['jasion', 'kenny', 'jendall', '']
        #print("people_file:",people_file)#内容含'body': b'jasion\r\nkenny\r\njendall\r\n'
        print("data",data)
        
        for i in name:
            if (i != ''):
                res.append(i)
        print("res:",res)
name: ["b'jasion\\r\\nkenny\\r\\njendall\\r\\nkadashan\\r\\nben\\r\\nallen\\r\\nfaceujoi\\r\\nzhuyuyua\\r\\njainsld \\r\\njasmine\\r\\nmac\\r\\nmile\\r\\nmike\\r\\ntony\\r\\nwangmy\\r\\n'"]
data b'jasion\r\nkenny\r\njendall\r\nkadashan\r\nben\r\nallen\r\nfaceujoi\r\nzhuyuyua\r\njainsld \r\njasmine\r\nmac\r\nmile\r\nmike\r\ntony\r\nwangmy\r\n'
res: ["b'jasion\\r\\nkenny\\r\\njendall\\r\\nkadashan\\r\\nben\\r\\nallen\\r\\nfaceujoi\\r\\nzhuyuyua\\r\\njainsld \\r\\njasmine\\r\\nmac\\r\\nmile\\r\\nmike\\r\\ntony\\r\\nwangmy\\r\\n'"]
ERROR:tornado.application:Uncaught exception POST /?award= (::1)
HTTPServerRequest(protocol='http', host='localhost:8888', method='POST', uri='/?award=', version='HTTP/1.1', remote_ip='::1')

可以看到,bstr是file中的body值,也就是表单的值,只不过传输用了二进制bytes格式,导致bstr是b'............'格式,

然后因为decode转换失败(这个原因我也没搞懂,报错信息0xd6),

用了str()函数,得到的是data,

将data进行字符串分割,得到列表name,错误结果,多了斜杠。

原因其实是我没有在字符串前加r!因为\r\n都是空白符,但是在bytes转换成str后是无此义的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值