python学习笔记3--字符串

来源:互联网 发布:可以备案的域名后缀 编辑:程序博客网 时间:2024/05/23 01:23
1.Python当中的字符串是一个序列,可以用str[i]返回字符串中的各个字符。
i为0或正数时,是从前向后的第i+1个字符;i为负数时,是倒数第-i个字符。
想遍历整个字符串,无需先计算字符串的长度再循环,可以很方便的使用for语句
for char in string:     print char

2.string[m:n:s],s是步长不能为0,取出的切片包含m不包含n。如果m<n且s>0,为字符串从下标m向后到下标n-1,每s个字符取一个出来拼接成的切片;如果m>n且s<0,则为从下标m向前到下标n+1,每隔-s个字符取一个出来拼接成的切片;其他情况是长度为0的空字符串。s>0时,m缺省是从第一个字符开始,n缺省为直到最后一个字符;s<0时相反;s缺省步长默认为1。
例如,s = "abcd",则s[1]、s[1:2]、s[-3:-4,-1]都是"b"
这样判断字符串是否回文也很简单了
def is_palindrome(s):    if s == s[::-1]:        return True    else:        return False

3.字符串一经创建就是只读状态,不可改变。如果想进行修改,只能做切片的拷贝再拼接。就算是字符串自身的方法string.upper()也是重新生成一个全大写的拷贝。

4.字符串之间的比较是按照排列顺序(ascii代码表的顺序 ,从首字符开始比较)来的,排列在前的小于排列在后的。
例如,"abc">"a">"Abc">"@">"3">"#"

5.Python中没有char类型的变量,不能像C一样,直接将一个字符与一个整数做判断,例如不能说'a'>65。但是可以使用chr(n)和ord(str)来转unicode换字符和数字。chr(97)为'a',ord('a')为97。 

6.常用的字符串方法:
(1)经处理的拷贝:
  • string.capitalize() #如果第一个字符为字母,返回首字母大写其余为小写的拷贝,如果第一个字符不为字母,则字母的字符全变为小写
  • string.title() #返回所有被非字母字符隔开的首字母大写其余字母小写的拷贝,例如"8 cATS@hOME".title()会返回"8 Cats@Home"
  • string.upper() #返回所有字母大写的拷贝
  • string.lower() #返回所有字母小写的拷贝
  • string.replace(t, u, n) #返回将前n个u字符换成t的拷贝,如n缺省则全换
  • string.strip(chars) #返回去掉字符串开始和结尾包括在chars内的字符后的拷贝。如果只想去掉开始的用string.lstrip(chars),去掉结尾的用string.rstrip(chars),chars缺省是去掉空白字符
  • string.split(t, n) #将字符串在t出分割n次,并返回列表,t可以是一个字符也可以是字符串,分割后t会被删除,n缺省则在所有t处分割,t如果缺省则在空白字符处分割
  • string.join(seq) #返回将列表seq的每一项用string连成整体的字符串
(2)查找
  • string.count(t, start, end) #返回string[start:end]中t的个数。start和end要么同时缺省,要么只能缺省end
  • string.find(t, start, end) #返回从string[start:end]中找到的第一个t在string中开始的位置,如果在切片中未找到,则返回-1。string.rfind(t, start, end)返回的是string[start:end]中最后一个t在string中的开始位置。缺省同上
  • string.index(t, start, end) #作用与string.find(t, start, end)相同,包括string.rindex(t, start, end),区别在于如果找不到会返回异常。缺省同上
  • string.startswith(t, start, end) #如果string[start:end]以t开始则为真,否则为假。缺省同上
  • string.endswith(t, start, end) #如果string[start:end]以t结尾则为真,否则为假。缺省同上
(3)判断
  • string.isalnum() #string中如果全是字母和数字则为真,否则为假
  • string.isalpha() #string中如果全是字母则为真,否则为假
  • string.isupper() #string中有字母且全为大写为真,否则为假
  • string.islower() #string中有字母且全为小写为真,否则为假
  • string.isspace() #string中所有字符都为空白字符为真,否则为假
  • string.istitle() #string中有字母,且所有被非字母字符分隔开的首字母为大写,其余为小写,为真;否则为假。例如,"8 Cats@Home"为真,"8 Cats@home"为假
  • string.isdigit() #string中只有byte数字或Unicode数字或Unicode字符串所表达出的各语言数字为真,否则为假。例如,"10086".isdigit()和"\N{bengali digit one}0086".isdigit()和b"10086".isdigit都为真,"two".isdigit()和"3.14159".isdigit()为假
  • string.isdecimal() #string中只有Unicode数字或Unicode字符串所表达出的语言数字为真,否则为假。b"10086".isdecimal()会出现异常
  • string.isnumeric() #除了Unicode数字和字符串表达的语言数字,还能判断汉字数字字符串为真(其他语言打不出来,没办法尝试)。例如,"幺零〇八陆".isnumeric()为真

     # 看来想通过最后三个判断数字的函数来判断字符串是否可以转换成整数或者浮点数是不可能了。。。

(4)对齐
  • string.zfill(n) #如果string的长度不够n,则返回的拷贝在开始处补0,使长度凑齐n
  • string.center(n, c) #如果string的长度不够n,返回的拷贝中间对齐,在两边补c。c只能为1个字符,如果c缺省,则补空格
  • string.ljust(n, c) #如果string的长度不够n,返回的拷贝左对齐,在后面补c。c同上
  • string.rjust(n, c) #同上为右对齐
0 0
原创粉丝点击