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

#当提交的表单数据格式为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:[email protected]
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"

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

时间: 2024-10-05 12:52:06

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

post请求参数格式的分类解析

格式分为两大类:[Form Data].[Request Payload] 一.默认的表单提交,格式为Form-Data, Content-Type:application/x-www-form-urlencoded(表单参数以name=value&name1=value1的形式在请求体中) 二.另外一种提交参数,格式为Request Payload Content-Type有两种: 1.application / json(参数是以json对象传输)[原生ajax中post请求默认就是使用这种

通过FormData对象可以组装一组用 [XMLHttpRequest]发送请求的键/值对,它可以更灵活方便的发送表单数据。

工作记录用 1 大概页面,点击选择按钮,选择文件,填写备注并可以上传前预览,然后点击上传按钮开始上传 2 html+js代码 <h2>Test</h2> <div id="fileList"></div> <span id="file_ct" style="display:none"><input id="file_input" accept="Ima

axios发送post请求,如何提交表单数据?

var app = new Vue({ el: "#register", data: { registerUrl: "/KindlePocket/bindingData" newUserInfo: { userName:'n', phone:'13', email:'12', emailPwd:'22', kindleEmail:'asd' } }, methods: { register: function() { axios.post(this.register

httpclient模拟post请求json封装表单数据

1 public static String httpPostWithJSON(String url) throws Exception { 2 3 HttpPost httpPost = new HttpPost(url); 4 CloseableHttpClient client = HttpClients.createDefault(); 5 String respContent = null; 6 7 // json方式 8 JSONObject jsonParam = new JSON

axios发送post请求,提交表单数据

解决办法一 你要是看下用法就解决了... https://www.npmjs.com/package- 或者 https://github.com/mzabriskie- 1 axios({ 2 url: '/user', 3 method: 'post', 4 data: { 5 firstName: 'Fred', 6 lastName: 'Flintstone' 7 }, 8 transformRequest: [function(data) { 9 10 let ret = '' 11

Struts2学习笔记(六)——Action处理请求参数

在struts2框架中关于Action处理请求参数有两种方案(三个方式),表单属性的名称应该和在Action类中定义的成员属性或者在JavaBean中定义的成员属性名称一样: 1.属性驱动 1)直接在Action类中定义成员属性来接收请求参数 (将Action当成javaBean),在Action中还需要定义成员属性的setter方法. 表单信息: 1 <form action="${pageContext.servletContext.contextPath}/testAction.ac

http请求响应格式

当浏览器向Web服务器发出请求时,它向服务器传递了一个数据块,也就是请求信息,HTTP请求信息由3部分组成:l   请求方法URI协议/版本l   请求头(Request Header)l   请求正文下面是一个HTTP请求的例子:GET/sample.jspHTTP/1.1 Accept:image/gif.image/jpeg,*/*Accept-Language:zh-cnConnection:Keep-AliveHost:localhostUser-Agent:Mozila/4.0(co

SpringMVC请求参数北京PK10平台出租和响应结果全局加密和解密

前段时间在做一个对外的网关项目,涉及到加密和解密模块,这里详细分析解决方案和适用的场景.为了模拟真实的交互场景,先定制一下整个交互流程.第三方传输(包括请求和响应)数据报文包括三个部分: 1.timestamp,long类型,时间戳.2.data,String类型,实际的业务请求数据转化成的Json字符串再进行加密得到的密文.3.sign,签名,生成规则算法伪代码是SHA-256(data=xxx&timestamp=11111),防篡改.为了简单起见,加密和解密采用AES,对称秘钥为"

Spring MVC请求参数绑定

所谓请求参数绑定,就是在控制器方法中,将请求参数绑定到方法参数上 @RequestParam 绑定单个请求参数到方法参数上 @RequestParam("id") Integer id 将请求参数名为id的变量,绑定到id参数上,如果不知道@RequestParam值,默认从请求参数中取和变量名相同的请求参数 @RequestParam(value = "id",required = false) Integer id 可以通过指定required参数来指定是否必须