1.如何在python%的编码URL参数
Python中函数参数的传递是通过“赋值”来传递的,函数参数的接收传递有四种形式: 1. F(arg1,arg2,。
) 2. F(arg2=,arg3=。) 3. F(*arg1) 4. F(**arg1) 第1 种方式是最“传统”的方式:一个函数可以定义不限个数参数,参数(形式参数)放在跟在函数名后面的小括号中,各个参数之间以逗号隔开。
用这种方式定义的函数在调用的时候也必须在函数名后的小括号中提供相等个数的值(实际参数),不能多也不能少,而且顺序还必须相同。也就是说形参和实参的个数必须一致,而且想给形参1的值必须是实参中的第一位,形参与实参之间是一一对应的关系,即“形参1=实参1 形参2=实参2。”
很明显这是一种非常不灵活的形式。
比如:"def addOn(x,y): return x + y",这里定义的函数addOn,可以用addOn(1,2)的形式调用,意味着形参x将取值1,主将取值2。addOn(1,2,3)和addOn (1)都是错误的形式。
第2种方式比第1种方式好一点,在定义的时候已经给各个形参定义了默认值。因此,在调用这种函数时,如果没有给对应的形式参数传递实参,那么这个形参就将使用默认值。
比如:“def addOn(x=3,y=5): return x + y”,那么addOn(6,5)的调用形式表示形参x取值6,y取值5。此外,addOn(7)这个形式也是可以的,表示形参x取值7,y取默认值5。
这时候会出现一个问题,如果想让x取默认值,用实参给y赋值怎么办?前面两种调用形式明显就不行了,这时就要用到Python中函数调用方法的另一大绝招 ──关健字赋值法。可以用addOn(y=6),这时表示x取默认值3,而y取值6。
这种方式通过指定形式参数可以实现可以对形式参数进行“精确攻击”,一个副带的功能是可以不必遵守形式参数的前后顺序,比如:addOn(y=4,x=6),这也是可以的。这种通过形式参数进行定点赋值的方式对于用第1种方式定义的函数也是适用的。
上面两种方式定义的形式参数的个数都是固定的,比如定义函数的时候如果定义了5个形参,那么在调用的时候最多也只能给它传递5个实参。但是在实际编程中并不能总是确定一个函数会有多少个参数。
第3种方式就是用来应对这种情况的。它以一个*加上形参名的方式表示,这个函数实际参数是不一定的,可以是零个,也可以是N个。
不管是多少个,在函数内部都被存放在以形参名为标识符的tuple中。比如: 对这个函数的调用addOn() addOn(2) addOn(3,4,5,6)等等都是可以的。
与第3种方式类似,形参名前面加了两个*表示,参数在函数内部将被存放在以形式名为标识符的dictionary中。这时候调用函数必须采用key1=value1、key2=value2。
的形式。比如: 1. def addOn(**arg): 2. sum = 0 3. if len(arg) == 0: return 0 4. else: 5. for x in arg.itervalues(): 6. sum += x 7. return sum 那么对这个函数的调用可以用addOn()或诸如addOn(x=4,y=5,k=6)等的方式调用。
上面说了四种函数形式定义的方式以及他们的调用方式,是分开说的,其实这四种方式可以组合在一起形成复杂多样的形参定义形式。在定义或调用这种函数时,要遵循以下规则: 1. arg=必须在arg后 2. *arg必须在arg=后 3. **arg必须在*arg后 在函数调用过程中,形参赋值的过程是这样的: 首先按顺序把“arg”这种形式的实参给对应的形参 第二,把“arg=”这种形式的实参赋值给形式 第三,把多出来的“arg”这种形式的实参组成一个tuple给带一个星号的形参 第四,把多出来的“key=value”这种形式的实参转为一个dictionary给带两个星号的形参。
听起来好复杂,实际是是很简单的。很直观,来看例子: 1. def test(x,y=5,*a,**b): 2. print x,y,a,b 就这么一个简单函数,来看看下面对这个函数调用会产生什么结果: test(1) ===> 1 5 () {} test(1,2) ===> 1 2 () {} test(1,2,3) ===> 1 2 (3,) {} test(1,2,3,4) ===> 1 2 (3,4) test(x=1) ===> 1 5 () {} test(x=1,y=1) ===> 1 1 () {} test(x=1,y=1,a=1) ===> 1 1 () {'a':1} test(x=1,y=1,a=1,b=1) ===> 1 1 () {'a':1,'b':1} test(1,y=1) ===> 1 1 () {} test(1,2,y=1) ===> 出错,说y给赋了多个值 test(1,2,3,4,a=1) ===> 1 2 (3,4) {'a':1} test(1,2,3,4,k=1,t=2,o=3) ===> 1 2 (3,4) {'k':1,'t':2,'o':3}。
2.如何在python%的编码URL参数
Python中函数参数的传递是通过“赋值”来传递的,函数参数的接收传递有四种形式: 1. F(arg1,arg2,。
) 2. F(arg2=,arg3=。) 3. F(*arg1) 4. F(**arg1) 第1 种方式是最“传统”的方式:一个函数可以定义不限个数参数,参数(形式参数)放在跟在函数名后面的小括号中,各个参数之间以逗号隔开。
用这种方式定义的函数在调用的时候也必须在函数名后的小括号中提供相等个数的值(实际参数),不能多也不能少,而且顺序还必须相同。也就是说形参和实参的个数必须一致,而且想给形参1的值必须是实参中的第一位,形参与实参之间是一一对应的关系,即“形参1=实参1 形参2=实参2。”
很明显这是一种非常不灵活的形式。
比如:"def addOn(x,y): return x + y",这里定义的函数addOn,可以用addOn(1,2)的形式调用,意味着形参x将取值1,主将取值2。addOn(1,2,3)和addOn (1)都是错误的形式。
第2种方式比第1种方式好一点,在定义的时候已经给各个形参定义了默认值。因此,在调用这种函数时,如果没有给对应的形式参数传递实参,那么这个形参就将使用默认值。
比如:“def addOn(x=3,y=5): return x + y”,那么addOn(6,5)的调用形式表示形参x取值6,y取值5。此外,addOn(7)这个形式也是可以的,表示形参x取值7,y取默认值5。
这时候会出现一个问题,如果想让x取默认值,用实参给y赋值怎么办?前面两种调用形式明显就不行了,这时就要用到Python中函数调用方法的另一大绝招 ──关健字赋值法。可以用addOn(y=6),这时表示x取默认值3,而y取值6。
这种方式通过指定形式参数可以实现可以对形式参数进行“精确攻击”,一个副带的功能是可以不必遵守形式参数的前后顺序,比如:addOn(y=4,x=6),这也是可以的。这种通过形式参数进行定点赋值的方式对于用第1种方式定义的函数也是适用的。
上面两种方式定义的形式参数的个数都是固定的,比如定义函数的时候如果定义了5个形参,那么在调用的时候最多也只能给它传递5个实参。但是在实际编程中并不能总是确定一个函数会有多少个参数。
第3种方式就是用来应对这种情况的。它以一个*加上形参名的方式表示,这个函数实际参数是不一定的,可以是零个,也可以是N个。
不管是多少个,在函数内部都被存放在以形参名为标识符的tuple中。比如: 对这个函数的调用addOn() addOn(2) addOn(3,4,5,6)等等都是可以的。
与第3种方式类似,形参名前面加了两个*表示,参数在函数内部将被存放在以形式名为标识符的dictionary中。这时候调用函数必须采用key1=value1、key2=value2。
的形式。比如: 1. def addOn(**arg): 2. sum = 0 3. if len(arg) == 0: return 0 4. else: 5. for x in arg.itervalues(): 6. sum += x 7. return sum 那么对这个函数的调用可以用addOn()或诸如addOn(x=4,y=5,k=6)等的方式调用。
上面说了四种函数形式定义的方式以及他们的调用方式,是分开说的,其实这四种方式可以组合在一起形成复杂多样的形参定义形式。在定义或调用这种函数时,要遵循以下规则: 1. arg=必须在arg后 2. *arg必须在arg=后 3. **arg必须在*arg后 在函数调用过程中,形参赋值的过程是这样的: 首先按顺序把“arg”这种形式的实参给对应的形参 第二,把“arg=”这种形式的实参赋值给形式 第三,把多出来的“arg”这种形式的实参组成一个tuple给带一个星号的形参 第四,把多出来的“key=value”这种形式的实参转为一个dictionary给带两个星号的形参。
听起来好复杂,实际是是很简单的。很直观,来看例子: 1. def test(x,y=5,*a,**b): 2. print x,y,a,b 就这么一个简单函数,来看看下面对这个函数调用会产生什么结果: test(1) ===> 1 5 () {} test(1,2) ===> 1 2 () {} test(1,2,3) ===> 1 2 (3,) {} test(1,2,3,4) ===> 1 2 (3,4) test(x=1) ===> 1 5 () {} test(x=1,y=1) ===> 1 1 () {} test(x=1,y=1,a=1) ===> 1 1 () {'a':1} test(x=1,y=1,a=1,b=1) ===> 1 1 () {'a':1,'b':1} test(1,y=1) ===> 1 1 () {} test(1,2,y=1) ===> 出错,说y给赋了多个值 test(1,2,3,4,a=1) ===> 1 2 (3,4) {'a':1} test(1,2,3,4,k=1,t=2,o=3) ===> 1 2 (3,4) {'k':1,'t':2,'o':3}。
3.怎么用python实现一个页面的开发?
谢邀,去年春节期间,没事报了一个python web开发的网络课程,根据自己的学习情况来回答一下。
一个页面的开发,应该是分前端和后端的。关于后端在python中有两个最常见的开发框架:Django,flask。
Django大而全,什么功能模块都已经封装好了,调用即可;flask小而精,没有很高的封装,但是有许多功能模块,需要我们自己去集成。 当初学习的那个网络课程是用flask框架来做的,上手很简单:当初学习的时候能写一个小的网站,本来想转行做python后端开发的,但是后来还是接着做数据挖掘了,许久不用,倒是有点生疏了。
总得来说,有几大模块:路由route() 装饰器把一个函数绑定到对应的 URL 上,Flask 的 URL 规则基于 Werkzeug 的路由模块。 这个模块背后的思想是基于 Apache 以及更早的 HTTP 服务器主张的先例,保证优雅且唯一的 URL。
模板渲染 Jinja2用 Python 生成 HTML 十分无趣,而且相当繁琐,因为你必须手动对 HTML 做转义来保证应用的安全。为此,Flask 配备了 Jinja2 模板引擎。
当然你也可以使用其他的模板引擎,但是建议你还是使用jinja2模板请求对象request你可以使用全局 request 对象访问进入的请求数据。 Flask 处理进入的请求数据并允许你用这个全局对象访问它。
如果你工作在多线程环境,Flask 内部保证你总会在当前线程上获取正确的数据。 数据库交互-Flask-SQLAlchemy 通过sqlalchemy对数据库增删改查,使用的是orm模式,不需要写SQL语句。
在数据库中,一个表就是一个python类,一个类的实例就是表中的行。在开发过程中,会用到一些python的高级应用:装饰器:在权限验证的时候很需要用到模块的导入:防止循环导入图像处理:验证码生成property使用:密码加密时使用关于前端如果对前端不熟,想做一个小网站练练手,推荐你使用Bootstrap里面有各种的CSS样式,各种组件,JS插件,还有一些网站实例供你参考,对前端HTML,CSS 不是很熟悉的,可以通过这略微修改快速搭建一个前端页面。
后记:将来的数据挖掘工作者可能也需要懂网站后端开发,因为以后建模不会一直都是在单机中,可能会集成到网站中,实时数据流入模型,结果展示在网站上。
4.python 如何获取url信息
window.location的 - 房产说明
哈希设置或获取href属性细分中的“#”后面的井号。
主机设置或获取主机名和端口号,地点或网址。
主机名设置或获取位置或URL的主机名部分。
的href设置或获取整个URL字符串。
路径名设置或指定文件名或路径。
端口设置或获取与端口号相关联的URL。 URL的
协议设置或获取协议部分。搜索列表设置或获取href属性部分后面的问号。
作为window.location.href设置或获取整个URL字符串。
5.url编码问题在python中怎么解决
最近在抓取一些js代码产生的动态数据,需要模拟js请求获得所需用的数据,遇到对url进行编码和解码的问题,就把遇到的问题总结一下,有总结才有进步,才能使学到的知识更加清晰。
对url进行编码和解码,python提供了很方便的接口进行调用。url中的query带有特殊字符(不是url的保留字)时需要进行编码。
当url中带有汉字时,需要特殊的处理才能正确编码,以下都只针对这种情形,当然也适用于纯英文字符的url。(1) url编码:import urllib url = 'wd=哈哈' #如果此网站编码是gbk的话,需要进行解码,从gbk解码成unicode,再从Unicode编码编码为utf-8格式。
url = url.decode('gbk', 'replace') print urllib.quote(url.encode('utf-8', 'replace')) 结果: 3a%2f%2ftest.com%2fs%3fwd%3d%e5%93%88%e5%93%88(2) url解码:import urllib encoded_url = est.com%2fs%3fwd%3d%e5%93%88%e5%93%88' print urllib.unquote(encoded_url).decode('utf-8', 'replace').encode('gbk', 'replace') #反过来 函数调用的参数以及结果都是utf-8编码的,所以在对url编码时,需要将参数串的编码从原始编码转换成utf-8,对url解码时,需要将解码结果从utf-8转换成原始编码格式。依据网站采用的编码不同,或是gbk或是utf-8,赋赋予不同的编码,进行不同的url转码。
GBK格式,一个中文字符转为%xx%xx,共两组;utf-8格式,一个中文字符转为%xx%xx%xx,共三组。>>> import sys,urllib >>> s = '杭州' >>> urllib.quote(s.decode(sys.stdin.encoding).encode('gbk'))%BA%BC%D6%DD >>> urllib.quote(s.decode(sys.stdin.encoding).encode('utf8'))'%E6%9D%AD%E5%B7%9E' [python] view plain copya = "墨西哥女孩被拐4年接客4万次 生的孩子成为人质-搜狐新闻" print urllib.quote(urllib.quote(a)) 进行两次编码转换后,会变为:%25E5%25A2%25A8%25E8%25A5%25BF%25E5%2593%25A5%25E5%25A5%25B3%25E5%25AD%25A9%25E8%25A2%25AB%25E6%258B%25904%25E5%25B9。
这样的形式。同样需要两次解码后才能得到中文。
最近用python写了个小爬虫自动下点东西,但是url 是含中文的,而且中文似乎是 gbk 编码然后转成 url的。举个例子吧,我如果有个unicode字符串“历史上那些牛人们.pdf”,那么我转换成url之后是, t="%20%E5%8E%86%E5%8F%B2%E4%B8%8A%E9%82%A3%E4%BA%9B%E7%89%9B%E4%BA%BA%E4%BB%AC.pdf", 但是对方网站给的是 s="%C0%FA%CA%B7%C9%CF%C4%C7%D0%A9%C5%A3%C8%CB%C3%C7.PDF">>>print urllib.unquote("%C0%FA%CA%B7%C9%CF%C4%C7%D0%A9%C5%A3%C8%CB%C3%C7.PDF").decode('gbk').encode('utf-8')>>>历史上那些牛人们.PDF。
6.url编码问题在python中怎么解决
最近在抓取一些js代码产生的动态数据,需要模拟js请求获得所需用的数据,遇到对url进行编码和解码的问题,就把遇到的问题总结一下,有总结才有进步,才能使学到的知识更加清晰。
对url进行编码和解码,python提供了很方便的接口进行调用。 url中的query带有特殊字符(不是url的保留字)时需要进行编码。
当url中带有汉字时,需要特殊的处理才能正确编码,以下都只针对这种情形,当然也适用于纯英文字符的url。(1) url编码:import urlliburl = 'wd=哈哈' #如果此网站编码是gbk的话,需要进行解码,从gbk解码成unicode,再从Unicode编码编码为utf-8格式。
url = url.decode('gbk', 'replace')print urllib.quote(url.encode('utf-8', 'replace'))结果: 3a%2f%2ftest.com%2fs%3fwd%3d%e5%93%88%e5%93%88(2) url解码:import urllibencoded_url = est.com%2fs%3fwd%3d%e5%93%88%e5%93%88'print urllib.unquote(encoded_url).decode('utf-8', 'replace').encode('gbk', 'replace') #反过来函数调用的参数以及结果都是utf-8编码的,所以在对url编码时,需要将参数串的编码从原始编码转换成utf-8,对url解码时,需要将解码结果从utf-8转换成原始编码格式。依据网站采用的编码不同,或是gbk或是utf-8,赋赋予不同的编码,进行不同的url转码。
GBK格式,一个中文字符转为%xx%xx,共两组;utf-8格式,一个中文字符转为%xx%xx%xx,共三组。>>> import sys,urllib >>> s = '杭州' >>> urllib.quote(s.decode(sys.stdin.encoding).encode('gbk'))%BA%BC%D6%DD >>> urllib.quote(s.decode(sys.stdin.encoding).encode('utf8'))'%E6%9D%AD%E5%B7%9E' [python] view plain copya = "墨西哥女孩被拐4年接客4万次 生的孩子成为人质-搜狐新闻" print urllib.quote(urllib.quote(a)) 进行两次编码转换后,会变为:%25E5%25A2%25A8%25E8%25A5%25BF%25E5%2593%25A5%25E5%25A5%25B3%25E5%25AD%25A9%25E8%25A2%25AB%25E6%258B%25904%25E5%25B9。
这样的形式。同样需要两次解码后才能得到中文。
最近用python写了个小爬虫自动下点东西,但是url 是含中文的,而且中文似乎是 gbk 编码然后转成 url的。举个例子吧,我如果有个unicode字符串“历史上那些牛人们.pdf”,那么我转换成url之后是, t="%20%E5%8E%86%E5%8F%B2%E4%B8%8A%E9%82%A3%E4%BA%9B%E7%89%9B%E4%BA%BA%E4%BB%AC.pdf", 但是对方网站给的是 s="%C0%FA%CA%B7%C9%CF%C4%C7%D0%A9%C5%A3%C8%CB%C3%C7.PDF">>>print urllib.unquote("%C0%FA%CA%B7%C9%CF%C4%C7%D0%A9%C5%A3%C8%CB%C3%C7.PDF").decode('gbk').encode('utf-8')>>>历史上那些牛人们.PDF。
转载请注明出处代码入门网 » pythonurl%