码迷,mamicode.com
首页 > 移动开发 > 详细

python正则-字符串处理,主要用于处理请求参数格式为application/x-www-form-urlencoded的表单数据

时间:2019-04-17 22:07:12      阅读:1097      评论:0      收藏:0      [点我收藏+]

标签:--   fir   arch   def   ber   number   eth   方法   add   

#当提交的表单数据格式为application/x-www-form-urlencoded,直接从浏览器复制出来的格式是str_lin(chrome,也是最常见的)或者str_in2(火狐)这两种格式
你会发现直接复制出来用python进行请求时不行的,所以需要对其进行处理,最终的格式key1=value1&key2=value2...这种格式
#下面是实现代码,第三个方法是没事的时候花了点时间帮开发写的一个协助脚本,用于php调试请求
import
re str_in=‘‘‘customer_type: 1 source: 1 course_name_id: 3 tel: 18883612485 customer_name: 测试 sex: 0 school: ce‘w‘s intro_id: 2340‘‘‘ #谷歌浏览器请求参数格式 str_in2=‘‘‘card_manage_id 5 keys[0] 0 study_card_name 孵化营9800 price 9800.00 number 9 least_price 1.00 org_id 3 meth_id 2 year 3 month 0 ticket[0][ticket_manage_id] 1 ticket[0][ticket_num] 10 period 36‘‘‘ #火狐浏览器请求参数格式 str_in3=‘‘‘customer_type:2 source:1 course_name_id:1 tel:13500000136 customer_name:测试-意向 sex:1 customer_card_afterfour:1234 sc_code_id:2 school:5555 address[0]:140000 address[1]:140100 sc_ty_id:2 student_number:2 team_number:2 turnover:2 intro_id:1 age_group:2 customer_card:500241199601020215 is_fellow_study:2 fellow_hr:223 study_goal:2 qq:2455 wechat_number:wew email:225@qq.com school_area:222 intrdu_id:312‘‘‘ class request_data_change_to_str(object): def requestDataToStr_firefoxAndChrome(self,str_in,str_custom==>): str_colon=re.search(([\W*][\s])|([\s*])|[\W*],str_in).group() #匹配出字符串中所有的冒号 str_equal=re.sub(str_colon,str_custom,str_in) #将字符串中的冒号替换为等于号(: >>> =) str_lin=re.search("(\s\n*){2,}|(\s\n*)",str_equal).group() #匹配出字符串中所有的换行符与空格,不写表示不限定匹配次数 str_give=re.sub(str_lin,&,str_equal) #将字符串中的换行符替换为& (\n >>> &) # print(‘---‘+str_colon+‘---‘) # print(str_equal) # print(str_equal) print(str_give) # print(str_give.encode()) return str_give.encode() #返回字符串,并对数据进行编码处理 def requestDataToStr_firefoxAndChrome_teShu(self,str_in,str_custom==>): str_colon=re.search(([\W*][\s]){2,}|([\s*]){2,}|[\W*]{2,},str_in).group() #匹配出字符串中所有的冒号 str_equal=re.sub(str_colon,str_custom,str_in) #将字符串中的冒号替换为等于号(: >>> =) str_lin=re.search("(\s\n*){2,}|(\s\n*)",str_equal).group() #匹配出字符串中所有的换行符与空格,不写表示不限定匹配次数 str_give=re.sub(str_lin,&,str_equal) #将字符串中的换行符替换为& (\n >>> &) # print(‘---‘+str_colon+‘---‘) # print(str_equal) # # print(str_equal) print(str_give) return str_give.encode() #返回字符串,并对数据进行编码处理 def requestDataTotr_custom(self,str_in,str_custom==>): str_colon=re.search(\s*:\W*,str_in).group() #匹配出字符串中所有的冒号 str_tihuan="+str_custom+" str_equal=re.sub(str_colon,str_tihuan,str_in) #将字符串中的冒号替换为目标符号即定义的str_custom的值 str_lin=re.search("(\s\n*){2,}|(\s\n*)",str_equal).group() #匹配出字符串中所有的换行符与空格,不写表示不限定匹配次数 str_give=re.sub(str_lin,"+str_lin+",str_equal) #将字符串中的换行符替换为& (\n >>> &) str_lin2=re.search(^\w*,str_give).group() #匹配字符串开头 str_give2=re.sub(str_lin2,"+str_lin2,str_give) #替换结果为‘"‘+匹配结果加 str_lin3=re.search(\w*$,str_give2).group() #匹配字符串末尾 str_give3=re.sub(str_lin3,str_lin3+",str_give2)#替换结果为匹配结果加+‘"‘ # print(‘---‘+str_colon+‘---‘) # print(str_equal) # print(str_lin3) print(str_give3) return str_give.encode() #返回字符串,并对数据进行编码处理 if __name__=="__main__": request_data_to_str=request_data_change_to_str() request_data_to_str.requestDataToStr_firefoxAndChrome(str_in) request_data_to_str.requestDataToStr_firefoxAndChrome_teShu(str_in2) request_data_to_str.requestDataTotr_custom(str_in,=>)

输出:

str_in 方法1>>>>> 

customer_type=>1&source=>1&course_name_id=>3&tel=>18883612485&customer_name=>测试&sex=>0&school=>ce‘w‘s&intro_id=>2340

str_in方法2>>>
customer_type=>1&source=>1&course_name_id=>3&tel=>18883612485&customer_name=>测试&sex=>0&school=>ce‘w‘s&intro_id=>2340

str_in方法3>>>>

"customer_type"=>"1"
"source"=>"1"
"course_name_id"=>"3"
"tel"=>"18883612485"
"customer_name"=>"测试"
"sex"=>"0"
"school"=>"ce‘w‘s"
"intro_id"=>"2340"

python正则-字符串处理,主要用于处理请求参数格式为application/x-www-form-urlencoded的表单数据

标签:--   fir   arch   def   ber   number   eth   方法   add   

原文地址:https://www.cnblogs.com/qtclm/p/10726500.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!