python字符串

Strings

1.\符号转义

>>> 'this name is \'希望\''
"this name is '希望'"

“\”反斜杠符号,表示转义,用来转义特殊符号,如'单引,"双引,\反斜杠自己

>>> print('this is \\')
this is \
>>> 'this is \\'
'this is \\'
>>> 

两种不同的输出可以看出,反斜杠是否真正转义,写程序需要用print函数,而不是直接输出。

>>> print('this is \name')
this is 
ame
>>> print('this is \zame')
this is \zame

由此可见,\使一些字符转义发生别的用处,例如\n,\t等等。

2.字符串切片

>>> name='who are you'  #声明str类型数据
>>> name[0]         #输出索引位置为1的字符串
'w'
>>> name[-1]        #输出索引位值为-1的字符串
'u'
>>> name[0:-1]       #输出从0到-1的字符串,也可以用name[:]表示
'who are yo'
>>> name[:-2]        #输出索引为值为-2之前的字符串
'who are y'
>>> 

切片的方式是将索引指向字符串的每个字符的位置,第一个字符位置为0,一直到最后为n。最后一个字符为-1,向前为-2,-3。

②而当索引位置越界,超出最大范围,则发生错误异常

>>> name[42]
Traceback (most recent call last):
  File "<pyshell#118>", line 1, in <module>
    name[42]
IndexError: string index out of range
>>> name[4:43]      #表示从索引为4的位置到43的位置,因为存在索引4的字符,结尾索引超过最大索引,所以从4的位置查询到最后
'are you'
>>> 

没有索引位值为42的字符,所以会抛出异常,我们可以通过函数len()来的到字符串的长度

③要知道,字符串是不可变的

>>> name[2]='aaaa'
Traceback (most recent call last):
  File "<pyshell#120>", line 1, in <module>
    name[2]='aaaa'
TypeError: 'str' object does not support item assignment  #对象不支持分配
>>> 

3.文本序列类型

字符串是Uncode的不可变的序列,字符串文字可以以各种方式编写

>>> print( 'allows embedded "double" quotes')
allows embedded "double" quotes
>>> print("allows embedded 'single' quotes")
allows embedded 'single' quotes
>>> print('''Three single quotes'''"""Three double quotes""")
Three single quotesThree double quotes
>>> 

三重引用的字符串可能会跨越多行 - 所有相关的空格将包含在字符串文字中

②字符串总以b或B作为字符串前缀来表示bytes类型,而不是str类型,它们只能包含ASCII字符; 数值为128或更大的字节必须用转义表示

字符串和字节字面值可以选择以字母'r' 或前缀'R'; 这样的字符串称为原始字符串,并将反斜杠视为文字字符

>>> name=b'this is name'
>>> type(name)      #以b或B表位前缀,使用type(name)获得数据的类型
<class 'bytes'>
>>> name=r'this is /name'  #字符串前缀r,则所有可转义的字符都不在转义,而作为文字字符
>>> name
'this is /name'
>>> 

ord()函数将字符串以整数表示
chr()函数把编码转换为对应的字符
通过encode(编码格式)方法可以为字符串指定编码转换为bytes
使用decode(编码格式)方法可以就爱那个bytes转换成str

>>> name='a'
>>> ord(name)
97
>>> chr(97)
'a'
>>> 'a'.encode('utf-8')
b'a'
>>> '中华'.encode('utf-8')
b'\xe4\xb8\xad\xe5\x8d\x8e'
>>> b'\xe4\xb8\xad\xe5\x8d\x8e'.decode('utf-8')
'中华'
>>> b'\xe4\xb8\xad\xe5\x8d\x8e'.decode('ascii')
Traceback (most recent call last):
  File "<pyshell#159>", line 1, in <module>
    b'\xe4\xb8\xad\xe5\x8d\x8e'.decode('ascii')
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe4 in position 0: ordinal not in range(128)
>>> 

Unicode编码转化为“可变长编码”的UTF-8编码。UTF-8编码把一个Unicode字符根据不同的数字大小编码成1-6个字节,常用的英文字母被编码成1个字节,汉字通常是3个字节,只有很生僻的字符才会被编码成4-6个字节。

向“GB2312”,“GBK”,“UTF-8”,“UTF-16”,“ISO-8859-1”,“ASCII”等等编码的详情,参考维基百科或百度百科

 

str类型的函数

只显示部分方法,具体更多方法请查看官方文档

字符串调用函数,只是返回结果并没有为源数据赋值

 1    capitalize()    将字符串的首字母大写
 2     casefold()        将字符串所有字母小写
 3     center(width)    将字符居中,并填充长度
 4     ljust(width)    左对齐并填充长度
 5     rjust(width)    右对齐并填充长度
 6     count(sub[,start[,end]])    返回字符串在某段位置出现的个数
 7     startswith(sub[,start[,end]])    检查字符串是否以sub子字符串开头x,后两个参数表示范围
 8     endswitch(sub[,start[,end]])    检查字符串是否以sub子字符串结尾,后两个参数表示范围
 9     expandtabs([tabsize=8])    将字符串中的\t转换成空格,如果不指定参数,默认为8
10     find(sub[,start[,end]])        检测指定位置中是否存在子字符串,有返回第一位所在的下标,没有则返回-1,    end位置的元素不包括
11     rfind(sub[,start[,end]])    从指定位置中从右边开始查找第一个sub 的下标
12     index(sub[,start[,end]])    作用与find相似,但是没找到则发生异常
13     rindex(sub[,start[,end]])    从指定位置中从右边开始查找第一个nsub 的下标
14     isalnum()            如果字符串中至少有一个字符并且所有字符都是字母或数字则返回True
15     isalpha()            如果字符串只有字母且都是字母,则返回True
16     isdigit()            判断字符串只包含数字且都是数字,则返回True
17     islower()            如果字符串中至少包含一个字母,并且所有字母都是小写的,则返回True
18     isupper()            如果字符串至少包含一个字母,并且所有字母都是大写,则返回True
19     isspace()            如果字符串不为空并且只包含空格,则返回True
20     istitle()            如果字符串中所有单词首字母都是大写,其余都是小写,则返回True,如果要包含数字,只能将数字作为一个单词,并且不能混杂字母
22     title()            将字符串标题化,所有单词开头大写,其余小写
23     join(sub)            以 字符串 为分割符 ,将所有字符串插入到 sub中所有字符之间
24     lower()            将字符串中所有字母转换成小写并返回
25     upper()            将字符串中所有字母转换成大写并返回
26     swapcase()        将字符串所有大写变小写,小写变大写
27     strip([char])        清除字符串前后所有空格,不包括中间,参数则表示清除左右所有char
28     lstrip()            清除字符串开头所有空格
29     rstrip()            清除末尾所有空格
30     partition(sub)        从左至右查找字符串中第一个存在的sub,不存在则将字符串作为元组的第一个元素,第二第三个元素为空字符串,
31                 存在则,将sub作为第二个元素,sub左边的作为第一个元素,右边的作为第三个元素    并返回长度为3的元组
32     rpartition(sub)        从右至左查找字符串中第一个存在的sub。。。。。。
33     replace(old,new[,count])    将字符串中所有old字符串,替换成new字符串,第三个参数表示要替换的个数
34     split(sub)            查找字符串中是否存在sub,不存在则将字符串完整的作为列表返回,存在,则通过sub将字符串切割成若干份,以列表形式返回,列表中不再包含sub字符串
36     zfill(width)            字符串右对齐,用0填充剩余长度

 

字符串运算符

1     +        字符串连接
2     *        重复输出字符串
3     []        通过索引获取字符串中的字符
4     [:]        截取字符串中的部分
5     in        成员运算符-如果字符串中包含给定的字符返回True
6     not in    成员运算符-如果字符串中不包含给定的字符返回True
7     r/R        字符串前加r或R,将不会转义特殊字符,同普通字符串一样打印
8     %        格式字符串

 示例

>>> print('abc'+'def')
abcdef
>>> print('abc'*5)
abcabcabcabcabc
>>> print('l' in 'less')
True
>>> print('l' not in 'less')
False
>>> print('你的名字是 %s' % '希望')
你的名字是 希望
>>> 

 

字符串格式化符号

   %c        格式化字符串及其ASCII码        "%c" % 97    返回:'a'
    %d        格式化整数
    %s        格式化字符串                    "我叫 %s 今年 %d 岁!" % ('小明', 10)返回:我叫小明今年10岁
    %o        格式化无符号八进制数            "%o" % 10    10的八进制数,返回:12
    %x        格式化无符号十六进制数
    %X        格式化无符号十六进制数(大写)

 

posted @ 2017-08-31 03:55  他的梦  阅读(249)  评论(0编辑  收藏  举报