python352
❶ 您好,有关于python的问题,想要请教你,方便加您的可以直接沟通的方式吗
可以呀
Common Stumbling Blocks
本段简单的列出容易使人出错的变动(初学者应该注意)。
· print语句被print()函数取代了,可以使用关键字参数来替代老的print特殊语法。例如:
Old: print "The answer is", 2*2
New: print("The answer is", 2*2)
Old: print x, # 使用逗号结尾禁止换行
New: print(x, end=" ") # 使用空格代替换行
Old: print # 输出新行
New: print() # 输出新行
Old: print >>sys.stderr, "fatal error"
New: print("fatal error", file=sys.stderr)
Old: print (x, y) # 输出repr((x, y))
New: print((x, y)) # 不同于print(x,y)!
你可以自定义输出项之间的分隔符:
print("There are <", 2**32, ">possibilities!", sep="")
输出结果是:
There are <4294967296> possibilities!
注意:
print()函数不支持老print语句的"软空格"特性,例如,在python2.x中,print "A\n", "B"会输出"A\nB\n",而python3.0中,print("A\n","B")会输出"A\n B\n"
使用 2to3 源码转换工具时,所有的print语句被自动转换成print()函数调用,对大项目,这是无需争论的。
· python3.0使用字符串(strings)和bytes代替Unicode字符串和8位字符串,这意味着几乎所有使用Unicode编码和二进制数据的代码都要改动。这个改动很不错,在2.x的世界里,无数的bug都是因为编码问题。
· map()和filter()返回迭代器(iterators)
· dict方法keys(),items(),values()返回视图(同样是迭代器)而不是列表(list)
· 内建的sorted()方法和list.sort()方法不再接受表示比较函数的cmp参数,使用key参数代替。
· 1/2返回浮点数,使用1//2能得到整数。
· repr()函数对于long整数不再包含拖尾的L,所以不加判断的去除最后一个字符会导致去掉一个有用的数字。
String and Bytes
· 现在只有一种字符串:str,它的行为和实现都很像2.x的unicode串。
· basestring超类已经去掉了,2to3 工具会把每个出现的basestring替换成str。
· PEP3137:新类型bytes,用来表示二进制数据和编码文本,str和bytes不能混合,需要时,必须进行显示的转换,转换方法是str.encode()(str->bytes)和bytes.decode()(bytes->str).
· 在原始字符串(raw strings)中所有反斜线都按字面量解释,不再特殊处理Unicode转义字符。
· PEP3112:bytes字面量,例如b"abc",创建bytes实例。
· PEP3120:默认源文件编码为UTF-8
· PEP3131:可以使用非ASCII标识符(然而,除了注释中贡献者的名字之外,标准库仍然只包含ASCII)
· PEP3116:新的IO实现,API几乎100%向后兼容,二进制文件使用bytes代替strings
· 去除了StringIO和cStringIO模块,取而代之的是io.StringIO或者io.BytesIO
PEP3101:字符串格式化的新方法
· str.format方法(原文提到替代了%操作符,实际上,format方法和%的用法差别很大,各有所长)。
PEP3106:修补了dict的keys(),items(),values()方法
· 删除了dict.iterkeys(),dict.itervalues()和dict.iteritems()
· dict.keys(),dict.values()和dict.items()返回dict相关数据的引用
PEP3107:函数注解(FunctionAnnotations)
· 注解函数参数和返回值的标准化方法
Exception Stuff
· PEP352:异常类必须继承自BaseException,它异常结构的基类。
· 移除了StandardError
· Dropping sequence behavior (slicing!)and message attribute of exception instances.
· PEP3109:抛出异常:现在必须使用raiseException(args)而不是原来的raise Exception, args
· PEP3110:捕获异常,现在必须使用exceptException as identifier而不是原来的except Exception,identifier
· PEP3134:异常链(Exceptionchain)。
· 改良了一些windows不能加载模式时的异常信息,具有本地化处理。
New Class and Metaclass Stuff
· 移除了classic class
· PEP3115:新的metaclass语法
· PEP3119:抽象基类。
· PEP3129:类包装。
· PEP3141:数字抽象基类
其他的语言变化
这里列出大多数的Python语言核心和内建函数的变化。
· 移除了backticks(使用repr()代替)
· 移除了<>(不等号,使用!=代替)
· as和with变成了关键字
· True,False和None变成了关键字
· PEP237:long不存在了,只有int,它和原来的long一样。不再支持以L结尾的数字字面量。移除sys.maxint,因为int现在已经是无限大了
· PEP238:int相除,返回float
· 改变了顺序操作符的行为,例如x<y,当x和y类型不匹配时抛出TypeError而不是返回随即的bool值
· 移除了__getslice__,语法a[i:j]被解释成a.__getitem__(slice(i,j))
· PEP3102:keyword-only arguments.在函数参数列表中,出现在*args之后的命名参数只能使用"关键字参数"的形式调用
· PEP3104:nonlocal声明。使用nonlocal可以声明一个外部变量(不是global变量)
· PEP3111:raw_input() 改名为input(),也就是说,新的input()函数从标准输入设备(sys.stdin)读取一行并返回(不包括行结束符),如果输入过早终止,该函数抛出EOFError,如果想使用老的input(),可以使用(input())代替。
· xrange()改名为range(),range()现在不是产生一个列表(list),而是一个迭代器。
· PEP3113:移除了"元组参数拆包(tuple parameter unpacking)"。这种写法已经不行了:
1. deffoo(a, (b, c)):…
2.
3. 现在要这样写:
4.
5. deffoo(a, b_c):
6. b,c = b_c
· PEP3114:next()重命名为__next__(),新的内建函数next()可以调用一个对象的__next__()方法。
· PEP3127:新的八进制字面量,二进制字面量和bin()函数。你应该写0o666而不是0666,oct()函数也做了响应的改动。同样,0b1010等价于10,bin(10)返回"0b1010″。0666这种写法现在是错误的。
· PEP3132:支持迭代器拆包。现在你可以这样写:
1 a,b, *rest = some_seqence
2
3 甚至象这样:
4
5 *rest,a = stuff
6 一般情况下,rest对象是list,而等号右边的对象是可迭代的
· PEP3135:新的super()。你可以不适用任何参数调用super(),正确的参数和实例会被正确选择。如果使用参数,它的行为不变,和以前一样。
· zip(),map(),filter()返回迭代器。
· 移除了string.letters和它的小伙伴们(string.lowcase和string.uppercase),现在上场的是string.ascii_letters等
· 移除了apply(),callable(),exefile(),file(),rece(),reload()
· 移除了dict.has_key()。使用in操作符进行测试
· exec语句没有了,现在是exec()函数
· 移除了__oct__()和__hex__()特殊方法。oct()和hex()方法使用__index__()
· 移除了对__members__和__methods__的支持
· nb_nonzero重命名为nb_bool,__nonzero__()重命名为__bool__()
Optimizations
· 一般情况下,python 3.0比python 2.5慢33%左右。不过仍有提升空间。
模块变动(新的,改进的和废弃的)
· 移除了cPickle模块,可以使用pickle模块代替。最终我们将会有一个透明高效的模块。
· 移除了imageop模块
· 移除了audiodev, Bastion, bsddb185,exceptions, linuxaudiodev, md5, MimeWriter, mimify, popen2, rexec, sets, sha,stringold, strop, sunaudiodev, timing和xmllib模块
· 移除了bsddb模块(单独发布,可以从获取)
· 移除了new模块
· os.tmpnam()和os.tmpfile()函数被移动到tmpfile模块下
· tokenize模块现在使用bytes工作。主要的入口点不再是generate_tokens,而是tokenize.tokenize()
Build and C API Changes
Python's build process和C API的改动包括:
· PEP3118:新的Buffer API
PEP3121:扩展模块的的Initialization& Finalization
· PEP3123:使PyObject_HEAD符合标准C
其他的改动和修复
❷ python3.41 的UnicodeDecodeError:'gbk' codec can't decode byte 0xd3
ISO 8859-15,正式编号为ISO/IEC 8859-15:1999,又称Latin-9,俗称Latin-0,是国际标准化组织内ISO/IEC 8859的其中一个位字符集。
这个字符集于1998年制定,藉以加入在ISO/IEC 8859-1字符集缺少的法语 Œ œ 字母和 Ÿ 字母,及芬兰语 Š š, Ž ž 字母。同时,它亦把 ¤(通用货币符号)换成 €(欧元符号)。
位置
0xA4 0xA6 0xA8 0xB4 0xB8 0xBC 0xBD 0xBE
8859-15
€ Š š Ž ž Œ œ Ÿ
8859-1
¤ ¦ ¨ ´ ¸ ¼ ½ ¾
此字符集同时能支援以下文字:阿尔巴尼亚语、巴斯克语、布列塔尼语、加泰罗尼亚语、丹麦语、荷兰语、英语、爱沙尼亚语、法罗语、芬兰语、法语、弗里斯语、加利西亚语、德语、格陵兰语、冰岛语、爱尔兰盖尔语(新拼字法)、意大利语、拉丁语、卢森堡语、挪威语、葡萄牙语、里托罗曼斯语、苏格兰盖尔语、西班牙语、瑞典语。
Python2.x里的str和unicode有区别,从字面意义上看容易混淆,实际上,你可以把它理解成str是“字节串”,unicode是“字符串”(string总是翻译成“字符串”,在这里就很容易把人绕晕),看下面的例子:
# -*- coding: gb2312 -*-
s = "张三李四"
print len(s) #=> 8
u = s.decode('gbk')
print len(u) #=> 4
我的脚本编码用的是GBK,而不是UTF-8,你会看到len(s)是8,这是这四个汉字所用的实际8个“字节”,而len(u)是4,这就表示这里有4个“字符”
encode和decode是什么意思呢?所谓编码,就是把意义转换成符号;而解码,就是把符号还原成意义。在这里,encode应该理解成把抽象的字符转换成具体的字节,而decode是把具体的字节还原成抽象的字符
❸ 在python中条件表达式中可以使用赋值运算符“
可以
从3.8开始 Python支持赋值表达式,也叫海象表达式
❹ 如何用Python解决OJ中的A+B problem。
描述
Calculate a + b
输入制
Two integer a,,b (0 ≤ a,b ≤ 10)
输出
Output a + b
样例输入
1 2
样例输出
3
在python3 中,以这样的格式输入两个数要把这两个数当作一个字符串来处理,找到空格字符,让后两个数相加即可。错误解题方法是
❺ 用python如何将txt文件每一行的第2,3项提取出来(C:\Users\Administrator\Desktop\EXT1-2009-Snyder.txt
line = "Acebutolol 37517-30-9 N N/N D-352/N ooc"
words_of_line = line.split(' ') #按空格分开
print words_of_line # ['Acebutolol', '37517-30-9', 'N', 'N/N', 'D-352/N', 'ooc']
❻ python中str='23.209999,352,-999'我想把这个数据写到excel里面去而且是分成三列,请问怎么写
pytion可以读写excel文件,但需安装插件。
你只需把数据以,号拆分,然后逐一写入excel的单元格中。
❼ python中说的数据series类是什么意思,是向量,数组还是什么
Pandas–“大熊猫”基础
Series
Series: pandas的长枪(数据表中的一列或一行,观测向量,一维数组…)
Series1 = pd.Series(np.random.randn(4))
print Series1,type(Series1)
print Series1.index
print Series1.values
输出结果:
0 -0.676256
1 0.533014
2 -0.935212
3 -0.940822
dtype: float64 <class 'pandas.core.series.Series'>
Int64Index([0, 1, 2, 3], dtype='int64')
[-0.67625578 0.53301431 -0.93521212 -0.94082195]
np.random.randn() 正态分布相关。 函数说明
Series⽀持过滤的原理就如同NumPy
print Series1>0
print Series1[Series1>0]
输出结果如下:
0 0.030480
1 0.072746
2 -0.186607
3 -1.412244
dtype: float64 <class 'pandas.core.series.Series'>
Int64Index([0, 1, 2, 3], dtype='int64')
[ 0.03048042 0.07274621 -0.18660749 -1.41224432]
我发现,逻辑表达式,获得的值就是True或者False。要先取得值,还是要X[y]的形式。
❽ 怎样用Python将下面的数据读取到入数组中.并且对倒数后三列的值进行升序排序,第二三四五列数据可以不要
对倒数后三列的值进行升序排序---怎么个排法
❾ 如何搭建python+selenium自动化测试框架
selenium是一个web的自动化测试工具,不少学习功能自动化的同学开始首选selenium,相因为它相比QTP有诸多有点:
*免费,也不用再为破解QTP而大伤脑筋
*小巧,对于不同的语言它只是一个包而已,而QTP需要下载安装1个多G的程序。
*这也是最重要的一点,不管你以前更熟悉C、java、ruby、python、或都是C#,你都可以通过selenium完成自动化测试,而QTP只支持VBS
*支持多平台:windows、linux、MAC,支持多浏览器:ie、ff、safari、opera、chrome
*支持分布式测试用例的执行,可以把测试用例分布到不同的测试机器的执行,相当于分发机的功能。
关于selenium的基础知识与java平台的结合,我之前写过一个《菜鸟学习自动化测试》系列,最近学python,所以想尝试一下selenium的在python平台如何搭建;还好这方法的文章很容易,在此将搭建步骤整理分享。
搭建平台windows
准备工具如下:
-------------------------------------------------------------
下载python
-------------------------------------------------------------
如果你是新学python,哪果你没有要用的包是必须依赖于pyhton2.x 的,那么请毫不犹豫的选择python3.5吧!
window安装步骤:
1、下载python安装。
又报了个错:
Chromeversionmustbe>=27.0.1453.0 (Driverinfo:chromedriver=2.0,platform=WindowsNT5.1SP3x86)
说我chrome的版本没有大于27.0.1453.0,这个好办,更新到最新版本即可。
安装IEdriver
在新版本的webdriver中,只有安装了iedriver使用ie进行测试工作。
iedriver的下载地址在这里,记得根据自己机器的操作系统版本来下载相应的driver。
暂时还没尝试,应该和chrome的安装方式类似。
记得配置IE的保护模式
如果要使用webdriver启动IE的话,那么就需要配置IE的保护模式了。
把IE里的保护模式都选上或都勾掉就可以了。
❿ 关于python随机频率的问题。
http://..com/link?url=lqTp-AmKPbG95__5giK5Jry4dpZ_3tdGKip8UG9smDUGLNVlTfLBF5i 自己网络哈 有大神给了解决内方案容