标签:swa 范围 item 大括号 头部 文件 oop like wap
字符串 1.使用单引号“‘”引起来: ‘Quote me on this‘ 2.使用双引号“"”引起来: "What‘s your name?" 3.使用三引号(‘‘‘或"""): 可以指示一个多行的字符串。你可以在三引号中自由的使用单引号和双引号。 /‘‘‘ 如: """This is a multi-line string. This is the first line. "What‘s your name?," I asked. He said "Bond, James Bond." """ 4.转义符“\” \\ 指示反斜杠本身 \‘ 指示单引号 \" 指示双引号 注意: 行末的单独一个反斜杠表示字符串在下一行继续,而不是开始一个新的行。 5.自然字符串 自然字符串通过给字符串加上前缀r或R来指定,取消转义符的功能。例如: r"Newlines are indicated by \n"。 三引号的字符串也可以同样用法,如: R‘‘‘Newlines are indicated by \n‘‘‘ 6.unicode 字符串 Python允许你处理 unicode 文本(超过拉丁文字范围的)——只需要在字符串前加上前缀u或U。 例如,u"This is a Unicode string.哈哈.."。(Python3.x之后不需要这样了,可以直接写中文;而这样写会报错) Python 3.0开始对unicode全面支持,所有的文本(str)都是Unicode的;并引入了一个叫做bytes的新类型来处理字节序列。而编码过的Unicode会以二进制的数据来表示。 因为在2.x的世界里,大量的bug都是因为已编码的文本和未编码的文本混杂在一起而产生的。 7.按字面意义级连字符串 如果你把两个字符串按字面意义相邻放着,他们会被Python自动级连。 例如,"What‘s" ‘ your name?‘会被自动转为"What‘s your name?"。 即是说,两个字符串放在一起,会有字符拼接的效果。加号“+”也有字符拼接的效果。 8.字符串拼接 可以使用“str1.__add__(str2)”或者“str1 + str2”或者直接两个字符串放一起,来拼接字符串 但字符串与其它类型拼接时,得先把其它类型转成字符串类型,否则会出错。如“str1 + 2”就会出错,需要“str1 + str(2)” 9.字符串的乘法运算 “*”:可以把字符串重复拼接若干次,如: 2 * 3得到6; ‘la‘ * 3得到‘lalala‘。但乘以0或者负数时,结果将会是空字符串""。 10.字符串序列(索引和切片) 字符串可以使用下标来获取字符串中某个项目,以及截取字符串。 #字符串的序列,即“索引”和“切片”,参考“1.3.列表、元组和字典.py.txt”的“序列” 用法如: name = ‘swaroop‘; name[1]; name[1:3]; name[1:-1] 11.str(anything)函数和 unicode(anything)函数 Python 2有两个全局函数可以把对象强制转换成字符串:unicode()把对象转换成Unicode字符串,还有 str()把对象转换为非Unicode字符串。 Python 3只有一种字符串类型,Unicode字符串,所以 str()函数即可完成所有的功能。(unicode()函数在Python 3里不再存在了。) 另外: 没有专门的char数据类型,确实没有需要有这个类型。 单引号和双引号字符串是完全相同的——它们没有在任何方面有不同。 正则表达式: 一定要用自然字符串处理正则表达式。否则会需要使用很多的反斜杠。 使用 help(str) 可查看字符串对象定义的所有方法及属性。 由于百分号有特殊作用,所以字符串里面要用百分号的话需要使用“%%”,如: "select * from my_table where name like ‘%%测试%%‘" 字符串格式化控制: (未参考帮助文档,只是个人猜测) 转义符 (Escape Sequence): \ddd 1到3位8进制数指定Unicode字符输出(如: “\127”显示“W”) \uxxxx 1到4位16进制数指定Unicode字符输出(Python3.x开始支持此写法,如: \u54C8 显示“哈”字) \xhh 16进制数指定Unicode字符输出(如: “\xe5\x93\x88”显示“哈”) \\ \ \ (单独的一个斜杠也显示斜杠,即不后接有转移作用的字符时,作为斜杠使用) \‘ ‘ \" " \a 字符: 0x07 响铃(ASCII控制字符) \b 字符: 0x08 退格(光标向左走一格)(ASCII控制字符) \f 字符: 0x0c Formfeed(FF)(走纸转页,换页)(ASCII控制字符) \n 字符: 0x0a 换行(ASCII控制字符) \N{name} Unicode字符 只能针对Unicode \r 字符: 0x0d 回车 \t 字符: 0x09 跳格(tab符号),水平制表符 \v 字符: 0x0b 垂直制表符 %% % %d 输出10进制整数,只能是数字类型,输出字符串类型会出错;浮点类型的数字将被取整(直接删除小数部分)。 %f,%F 以10进制输出浮点数,只能是数字类型,输出字符串类型会出错。 %e,%E 以科学计数法输出10进制的浮点数,大小写的“e”反应在显示时科学计数法的“e/E”上,只能是数字类型。 %a Python3.0开始支持此写法,原样输出结果,字符串类型会加上单引号引起来。 %o (字母o)以8进制整数方式输出,只能是数字类型;浮点类型的数字将被取整(直接删除小数部分)。 %x,%X 将数字以16进制方式输出,只能是数字类型;浮点类型的数字将被取整(直接删除小数部分)。 %c 以字符方式输出,提供的类型必须是 char 或 int 。 %s 直接输出字符串(可输出任何类型) %r 将字符串格式化输出(可输出任何类型,会自动用 repr 转换,输出;类似于 %s) 注: 布尔类型的 True 或 False,用数字类型输出是 1或0,字符串输出是 True 或 False。 字符串 格式化 格式化的符号用法参考上面的“字符串格式化控制表” 1. %s 形式(简单占位符) 使用“%控制符”可以格式化字符串,非常方便。 如: str1 = "Swaroop‘s age is %d, weight is %f" % (5, 65.5) 2. %(name)s 形式(名称传参) “%(name)控制符”可按名称传参数(不写名称是按位置传参数) 如: str = "%(row)d Rows is %(value)s" % { ‘value‘: ‘kkkk‘, ‘row‘: 22 } 3. %n.mf 形式(制定输出长度的数值,补空格) 如: ‘%6.2f‘ % 1.235 # 结果为: ‘ 1.24‘ 在这种形式中,在f的前面出现了一个类似小数的6.2它表示的意思是,总共输出的长度为6个字符,其中小数2位。 常用用法如(只保留多少位小数,如两位小数): u‘%.2f元‘ % 567.123 4. %0n.mf 形式(制定输出长度的数值,并指定占位符) 如:‘%06.2f‘ % 1.235 # 结果为: ‘001.24‘ 在6的前面多了一个0,表示如果输出的位数不足6位就用0补足6位。 这一行的输出为‘001.24‘,可以看到小数点也占用一位。 类似于这里0这样的标记还有-、+。其中,-表示左对齐,+表示在正数前面也标上+号,默认是不加的。 如:‘%-6.2f‘ % 1.235 # 结果为: ‘1.24 ‘ 如:‘%+6.2f‘ % 1.235 # 结果为: ‘ +1.24‘ 5. %ns 形式(制定输出长度的字符串,补空格) %ns:如果字符串变量s不足n位的话,会先输出若干个空格后再输出str1 如:‘%8s:%6.1f‘ %(‘newsim‘, 9.51) # 结果为:‘ newsim: 9.5‘ 如:‘%(name)8s:%(score)06.1f‘ %{‘score‘:9.51, ‘name‘:‘newsim‘} # 结果为:‘ newsim:0009.5‘ 6. %-ns 形式(制定输出长度的字符串,后面补空格) %-ns:与上述相反,先输出变量s,不足的然后用空格在后面补齐 如:‘%-8s:%-6.1f‘ %(‘newsim‘, 9.51) # 结果为:‘newsim :9.5 ‘ 如:‘%(name)-8s:%(score)06.1f‘ %{‘score‘:9.51, ‘name‘:‘newsim‘} # 结果为:‘newsim :0009.5‘ 7. %*.*f 形式 有时候在%6.2f这种形式中,6和2也不能事先指定,会在程序运行过程中再产生,那怎么输入呢,当然不能用%%d.%df或%d.%d%f。 可以用%*.*f的形式,当然在后面的“要输出的值组中”包含那两个*的值。 比如:‘%*.*f‘ % (6, 2, 2.345) 就相当于‘%6.2f‘ % 2.345。 不过如果记不住,或不想那么耐烦,完全可以全部用%s代替,或者用多个"+"来构造类似的输出字符串。 如:‘%*.*f‘ % (6, 2, 2.345) # 结果为:‘ 2.35‘ 如:‘%*s‘ % (6, 2.345) # 结果为: ‘ 2.345‘ 如:‘%*s,%*.*f‘ % (8, ‘newsim‘, 6, 2, 2.345) # 结果为:‘ newsim, 2.35‘ 如:‘%*s,%0*.*f‘ % (8, ‘newsim‘, 6, 2, 2.345) # 结果为:‘ newsim,002.35‘ 如:‘%-*s,%++*.*f‘ % (8, ‘newsim‘, 6, 2, 2.345) # 结果为:‘newsim , +2.35‘ 8. {number} 形式(按位占位符) {name} 形式(按名称传参) string.format()函数也可以格式化字符串,且有“按位”、“按名称”两种形式,还可以两种形式混用 如: ‘subtracting {0}, adding {1}‘.format(1, ‘haha‘) # 参数将对应到“{number}”的位置上,结果为:subtracting 1, adding haha 如: "foo{1}{0}-{1}".format("bar", 6) # 结果为:foo6bar-6 如:‘Hi,{name},{message}‘.format(name = ‘Tom‘,message = ‘How old are you?‘) # 参数不止数字,也可以是名称,结果为:Hi,Tom,How old are you? 如:"-{arg!r}-".format(arg=‘test‘) # 参数也以指定格式,相当于“"-%(arg)r-"%{‘arg‘:‘test‘}”,结果为:-‘test‘- 如:"{{,}},-{0}-".format(‘test‘) # 两个“{”或者“}”表示大括号,结果为:{,},-test- 如:‘{0},I\‘m {1},{message}‘.format(‘Hello‘,‘Hongten‘,message = ‘How are you!‘) # 混合使用‘{0}‘,‘{name}‘也可以,结果为:Hello,I‘m Hongten,How are you! # 格式控制,数值 import math print(‘PI is {0}.‘.format(math.pi)) # PI is 3.14159265359. print(‘PI is {0!r}.‘.format(math.pi)) # PI is 3.1415926535897931. print(‘PI is {0:.3f}.‘.format(math.pi)) # PI is 3.142. print("PI is ‘{0:6.2f}‘.".format(math.pi)) # PI is ‘ 3.14‘. print("PI is ‘{0:+6.2f}‘.".format(math.pi)) # PI is ‘ +3.14‘. print("PI is ‘{0:-6.2f}‘.".format(math.pi)) # PI is ‘ 3.14‘. import datetime print("{0:now is: %Y-%m-%d %H:%M:%S}".format(datetime.datetime(2005, 2, 16, 23, 33,56))) # now is: 2005-02-16 23:33:56 print("now is {0:%Y-%m-%d %H:%M:%S}".format(datetime.datetime(2005, 2, 16, 23, 33,56))) # now is 2005-02-16 23:33:56 # 字典参数的输出 table = {‘Sjoerd‘: 4127, ‘Jack‘: 4098, ‘Dcab‘: 7678} print(‘Jack:{0[Jack]}; Sjoerd:{0[Sjoerd]:10d}; Dcab:{0[Dcab]!r}‘.format(table)) # Jack:4098; Sjoerd: 4127; Dcab:7678 for name, phone in table.items(): print(‘"{0:10}" ==> "{1:10d}"‘.format(name, phone)) # "Dcab " ==> " 7678" # "Jack " ==> " 4098" # "Sjoerd " ==> " 4127" 字符串转换成数字 float(str) 转换成浮点数,如, float("1e-1") 结果: 0.1 int(str) 转换成整数,如, int("12") 结果: 12 int(str,base) 转换成base进制的整数,如, int("11",2) 转换成2进制的整数,结果: 3 long(str) 转换成长整数,Python3取消此语法,如, long("12L") 结果: 12L long(str,base) 转换成base进制的长整数,Python3取消此语法,如, long("11L",2) 结果: 3L 字符串用例 name = ‘Swaroop‘ # This is a string object # 检查字符串的开头部分 if name.startswith(‘Swa‘): # 类似函数如 endswith() print(‘Yes, the string starts with "Swa"‘) # 检查是否包含有此内容 if ‘a‘ in name: print(‘Yes, it contains the string "a"‘) # 找出给定字符串的位置,找不到则返回-1 if name.find(‘war‘) != -1: print(‘Yes, it contains the string "war"‘, ‘s‘) # join()函数把列表拼接起来 delimiter = ‘; ‘ mylist = [‘Brazil‘, ‘Russia‘, ‘India‘, ‘China‘] print(delimiter.join(mylist)) # 打印: Brazil; Russia; India; China # 大小写转换 print("THIS IS TEST".lower()) # 转换成小写,打印: this is test print("this is test".upper()) # 转换成大写,打印: THIS IS TEST print("This Is Test".swapcase()) # 大小写互换,打印: tHIS iS tEST print(" This Is Test ".strip()) # 去掉前后空格,打印: This Is Test # 格式化时 %r 与 %s 的区别 s = ‘‘‘ 哈哈, /,ss ‘‘‘ print(‘%r‘ % s) # 打印:‘\n \xe5\x93\x88\xe5\x93\x88, /,ss\n‘ print(‘%s‘ % s) # 原样打印,包括换行 常用 string 函数 下面所有范例,使用 s = ‘python String function‘ 1.字符串长度获取: len(str) 例: print ‘%s length=%d‘ % (s,len(s)) # 打印: python String function length=22 2.字母处理 全部大写: str.upper() 全部小写: str.lower() 大小写互换: str.swapcase() 首字母大写,其余小写: str.capitalize() 首字母大写(每个词都这样): str.title() print ‘%s lower=%s‘ % (s,s.lower()) # 打印: python String function lower=python string function print ‘%s upper=%s‘ % (s,s.upper()) # 打印: python String function upper=PYTHON STRING FUNCTION print ‘%s swapcase=%s‘ % (s,s.swapcase()) # 打印: python String function swapcase=PYTHON sTRING FUNCTION print ‘%s capitalize=%s‘ % (s,s.capitalize()) # 打印: python String function capitalize=Python string function print ‘%s title=%s‘ % (s,s.title()) # 打印: python String function title=Python String Function import string; print string.capitalize(s) # 打印: Python string function 3.格式化相关 获取固定长度,右对齐,左边不够用空格补齐: str.ljust(width) 获取固定长度,左对齐,右边不够用空格补齐: str.ljust(width) 获取固定长度,中间对齐,两边不够用空格补齐: str.ljust(width) 获取固定长度,右对齐,左边不足用0补齐 print ‘%s ljust="%s"‘ % (s,s.ljust(40)) # 打印: python String function ljust="python String function " print ‘%s rjust="%s"‘ % (s,s.rjust(40)) # 打印: python String function rjust=" python String function" print ‘%s center="%s"‘ % (s,s.center(40)) # 打印: python String function center=" python String function " print ‘%s zfill="%s"‘ % (s,s.zfill(40)) # 打印: python String function zfill="000000000000000000python String function" import string; print string.zfill(s, 40) # 打印: 000000000000000000python String function 4.字符串搜索相关 搜索指定字符串,没有返回-1: str.find(‘t‘) 指定起始位置搜索: str.find(‘t‘,start) 指定起始及结束位置搜索: str.find(‘t‘,start,end) 从右边开始查找: str.rfind(‘t‘) 搜索到多少个指定字符串: str.count(‘t‘) 上面所有方法都可用 index 代替,不同的是使用 index 查找不到会抛异常,而 find 返回-1 print ‘%s find nono=%d‘ % (s,s.find(‘nono‘)) # 打印: python String function find nono=-1 print ‘%s find t=%d‘ % (s,s.find(‘t‘)) # 打印: python String function find t=2 print ‘%s find t from %d=%d‘ % (s,3,s.find(‘t‘,3)) # 打印: python String function find t from 3=8 print ‘%s find t from %d to %d=%d‘ % (s,1,2,s.find(‘t‘,1,2)) # 打印: python String function find t from 1 to 2=-1 #print ‘%s index nono ‘ % (s,s.index(‘nono‘,1,2)) print ‘%s rfind t=%d‘ % (s,s.rfind(‘t‘)) # 打印: python String function rfind t=18 print ‘%s count t=%d‘ % (s,s.count(‘t‘)) # 打印: python String function count t=3 print s.index(‘on‘) # 打印: 4 import string; print string.find(s, ‘t‘) # 打印: 2 5.字符串替换相关 替换old为new: str.replace(‘old‘,‘new‘) 替换指定次数的old为new: str.replace(‘old‘,‘new‘,maxReplaceTimes) 另一种写法: import string; string.replace(str,"old","new") print ‘%s replace t to *=%s‘ % (s,s.replace(‘t‘, ‘*‘)) # 打印: python String function replace t to *=py*hon S*ring func*ion print ‘%s replace t to *=%s‘ % (s,s.replace(‘t‘, ‘*‘,1)) # 打印: python String function replace t to * once=py*hon String function import string; print ‘%s replace t to *=%s‘ % (s, string.replace(s,"t","*")) # 打印: python String function replace t to *=py*hon S*ring func*ion 6.字符串去空格及去指定字符 去两边空格: str.strip() 去左空格: str.lstrip() 去右空格: str.rstrip() 去两边字符串: str.strip(‘d‘),相应的也有 lstrip, rstrip s=‘ python String function ‘ print ‘%s strip="%s"‘ % (s,s.strip()) # 打印: python String function strip="python String function" print ‘%s strip="%s"‘ % (s,s.strip().strip(‘n‘)) # 打印: python String function strip="python String functio" print ‘%s lstrip="%s"‘ % (s,s.lstrip()) # 打印: python String function lstrip="python String function " print ‘%s lstrip="%s"‘ % (s,s.strip().lstrip(‘py‘)) # 打印: python String function lstrip="thon String function" import string; print ‘%s strip="%s"‘ % (s, string.strip(s)) # 打印: python String function strip="python String function" 7.按指定字符分割字符串为数组: str.split(‘ ‘) split(string,sep=None,maxsplit=-1) 默认按空格分隔(sep=‘ ‘) s=‘a b-c de-f‘ print ‘"%s" split=%s‘ % (s,s.split()) # 打印: "a b-c de-f" split=[‘a‘, ‘b-c‘, ‘de-f‘] print ‘"%s" strip=%s‘ % (s,s.split(‘-‘)) # 打印: "a b-c de-f" strip=[‘a b‘, ‘c de‘, ‘f‘] import string; ip="192.168.3.3"; print(string.split(ip,‘.‘)) # 打印: [‘192‘, ‘168‘, ‘3‘, ‘3‘] print("192.168.3.3".split(‘.‘,1)) # 部分分隔,打印: [‘192‘, ‘168.3.3‘] 8.字符串判断相关 是否以start开头: str.startswith(‘start‘) 是否以end结尾: str.endswith(‘end‘) 是否全为字母或数字: str.isalnum() 是否全字母: str.isalpha() 是否全数字: str.isdigit() 是否全小写: str.islower() 是否全大写: str.isupper() s=‘python String function‘ print ‘"%s" startwith t="%s"‘ % (s,s.startswith(‘t‘)) # 打印:"python String function" startwith t="False" print ‘"%s" startwith pyt="%s"‘ % (s,s.startswith(‘pyt‘)) # 打印:"python String function" startwith pyt="True" print ‘"%s" endwith d="%s"‘ % (s,s.endswith(‘d‘)) # 打印:"python String function" endwith d="False" print ‘"%s" endwith n="%s"‘ % (s,s.endswith(‘n‘)) # 打印:"python String function" endwith n="True" print ‘"%s" isalnum="%s"‘ % (s,s.isalnum()) # 打印:"python String function" isalnum="False" s=‘pythonStringfunction‘ print ‘"%s" isalnum="%s"‘ % (s,s.isalnum()) # 打印:"pythonStringfunction" isalnum="True" print ‘"%s" isalpha="%s"‘ % (s,s.isalpha()) # 打印:"pythonStringfunction" isalpha="True" print ‘"%s" isupper="%s"‘ % (s,s.isupper()) # 打印:"pythonStringfunction" isupper="False" print ‘"%s" islower="%s"‘ % (s,s.islower()) # 打印:"pythonStringfunction" islower="False" print ‘"%s" isdigit="%s"‘ % (s,s.isdigit()) # 打印:"pythonStringfunction" isdigit="False" s=‘3423‘ print ‘"%s" isdigit="%s"‘ % (s,s.isdigit()) # 打印:"3423" isdigit="True" str, unicode 对象的 encode 和 decode 方法 python2 中的 str 对象其实就是"8-bit string" ,字节字符串,本质上类似java中的 byte[]。 而 python2 中的 unicode 对象应该才是等同于java中的 String 对象,或本质上是java的 char[]。 str.decode 方法和 unicode.encode 方法是最常用的, 简单说来就是,python内部表示字符串用 unicode(其实python内部的表示和真实的 unicode 是有点差别的,对我们几乎透明,可不考虑),和人交互的时候用 str 对象。 s.decode --------> 将 s 解码成 unicode, 参数指定的是 s 本来的编码方式。这个和 unicode(s,encodename) 是一样的。 u.encode --------> 将 unicode 编码成 str 对象,参数指定使用的编码方式。 乱码/编码 问题 1、写的代码模块需要指定编码 如果代码没有指定 coding, python 就默认所有的字符为 ASCII 码, ASCII 码只支持256个字符,ASCII码不支持中文,所以就报错。 所以要在代码前写上“#coding:utf-8” 或 “#coding:gbk” 或 “#-*- coding:cp936 -*-” 但通用写上“#coding:utf-8” 2、代码前也可以写#coding:gbk 但要保证你的代码文件的保存格式为gbk.这个在windos下会出现这样的问题。 3、python2 内部所有编码统一为 unicode 即可解决乱码问题 unicode 可以处理世界上所有语言的字符。 utf-8 为 unicode 的一种实现形式,所以需要在代码前写上 #coding:utf-8 4、编码转换 牢记 python2 内部编码为 unicode. 其它的编码 decode() 为 unicode, 再编码 encode() 为你指定的编码,就不会出现乱码。 如: s = s.decode(‘gbk‘).encode(‘utf-8‘) # utf-8 也可以写成 utf8 不知道原本是什么编码,可以这样写: import sys; s = s.decode(sys.stdin.encoding).encode(‘utf8‘) 推荐的写法: s = unicode(s).encode(‘utf8‘) 5、网页采集时 代码指定#coding:utf-8 如果网页的编码为gbk 需要这样处理: html = html.decode(‘gbk‘).encode(‘utf-8‘) 6、字典等key或值的汉字问题 #coding:utf-8 dict1 ={1:‘python周末培训班‘,2:‘咨询‘} print dict1 # 这样输出的没有显示汉字,是显示汉字的其它编码 dict2 ={1:‘python视频培训班‘,2:‘咨询‘} for key in dict2: print dict2[key] 7、unicode 的汉字编码写到文本文件中 需要根据文本文件的编码进行转换 可以 encode(‘utf-8‘) 或 encode(‘gbk‘) 8、获取 unicode 编码 print repr(u‘中国‘) # 打印:u‘\u4e2d\u56fd‘ 总结:凡是报错信息中出现的错误包含“ASCII”,就是没有指定汉字编码的问题。
标签:swa 范围 item 大括号 头部 文件 oop like wap
原文地址:http://www.cnblogs.com/Mjonj/p/7395597.html