Day 3 Python字符串

Posted cxq0223

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Day 3 Python字符串相关的知识,希望对你有一定的参考价值。

一、编码

  计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理。最早的计算机在设计时采用8个比特(bit)作为一个字节(byte),所以,一个字节能表示的最大的整数就是255(二进制11111111=十进制255),如果要表示更大的整数,就必须用更多的字节。比如两个字节可以表示的最大整数是65535,4个字节可以表示的最大整数是4294967295

  ASCII编码(美国信息交换标准代码),它通常是用1个字节表示一个字符,它用数字0~127来表示计算机键盘上有的字符以及被称为控制代码的某些特殊值,用于协调信息的发送和接受。大写字母A~Z由值65~90表示,小写字母a~z由值97~122表示。

  Unicode编码把所有语言都统一到一套编码里,但它最常用的是用两个字节表示一个字符(如果要用到非常偏僻的字符,就需要4个字节)。现代操作系统和大多数编程语言都直接支持Unicode。

  如果统一成Unicode编码,乱码问题从此消失。但是,如果文本基本上全部是英文的话,用Unicode编码比ASCII编码需要多一倍的存储空间,在存储和传输上就十分不划算。所以出现了把Unicode编码转化为“可变长编码”的UTF-8编码。

  UTF-8编码把一个Unicode字符根据不同的数字大小编码成1-6个字节,常用的英文字母被编码成1个字节,汉字通常是3个字节,只有很生僻的字符才会被编码成4-6个字节。如果你要传输的文本包含大量英文字符,用UTF-8编码就能节省空间。实际上ASCII编码可以被看成是UTF-8编码的一部分。

  以上是ASCII、Unicode和UTF-8的关系,总结一下现在计算机系统通用的字符编码工作方式:在计算机内存中,统一使用Unicode编码,当需要保存到硬盘或者需要传输的时候,就转换为UTF-8编码。

  在最新的Python 3版本中,字符串是以Unicode编码的,即Python的字符串支持多语言的。在操作字符串时,我们经常遇到strbytes的互相转换。为了避免乱码问题,应当始终坚持使用UTF-8编码对strbytes进行转换。str通过encode()方法可以编码为指定的bytes;相反,把bytes通过decode()方法可变为str

二、字符串操作

  • 连接(+)

  它通过将两个字符串粘合在一起来构建字符串;

1 str1 = "Good"
2 str2 = "Luck"
3 str3 = str1 + str2
4 print(str3)

  结果为:

1 GoodLuck
  • 重复(*)

  它通过字符串与多个自身连接来构建字符串;

1 str1 = "Good"
2 str2 = "Luck"
3 str3 = str1 * 2
4 print("str3:", str3)
5 str4 = 3 * str2
6 print("str4:", str4)

  结果为:

1 str3: GoodGood
2 str4: LuckLuckLuck
  • 长度 len(<string>)

  它给出字符串含有多少个字符;

str = "GoodLuck"
print("str的长度为:", len(str))

  结果为:

str的长度为: 8
  • 字符串索引

  字符串是一个字符序列,通常访问组成字符串的单个字符可以通过索引来完成,在n个字符的字符串中,索引从0开始,n-1结束。Python中还允许用负数索引,从字符串右端索引。字符串索引的一般形式为:

    <string>[<expr>]

1 str = "GoodLuck"
2 print("str的长度为:", len(str))
3 print("str第一个字符:", str[0])
4 print("str第三个字符:", str[2], "str第五个字符:", str[4])
5 print("str最后一个字符:", str[len(str)-1])
6 print("str最后一个字符:", str[-1])
7 print("str倒数第二个字符:", str[-2])

  结果为:

1 str的长度为: 8
2 str第一个字符: G
3 str第三个字符: o str第五个字符: L
4 str最后一个字符: k
5 str最后一个字符: k
6 str倒数第二个字符: c
  • 字符串切片

  索引返回的是字符串的单个字符,若需要从字符串中访问连续的字符序列或子字符串,则可以用切片来实现。切片的形式是:

    <string>[<start>: <end>]

  切片产生从start直到(但不包括)end位置给出的子串。

 

1 str = "Hi jack,Good Luck!"
2 print("str[0:3]:", str[0:3])
3 print("str[3:14]:", str[3:14])
4 print("str[:8]:", str[:8])
5 print("str[8:]:", str[8:])
6 print("str[:]:", str[:])

 

  结果为:

1 str[0:3]: Hi 
2 str[3:14]: jack,Good L
3 str[:8]: Hi jack,
4 str[8:]: Good Luck!
5 str[:]: Hi jack,Good Luck!

三、字符串内置函数

  • capitalize()

    首字符会转换成大写,其余字符会转换成小写。首字符如果是非字母,首字母不会转换成大写,会转换成小写。

  • center(width, fillchar)

    返回一个指定的宽度 width 居中的字符串,fillchar 为填充的字符,默认为空格。

 

  • count(sub, start= 0,end=len(string))

    用于计字符串里某个子串的次数。可选参数为在字符串搜索的开始与结束位置。

 

  • endswith(suffix[, start[, end]])

    用于判断字符串是否以指定后缀结尾,如果以指定后缀结尾返回True,否则返回False。可选参数"start"与"end"为检索字符串的开始与结束位置。

 

  • find(str, beg=0 end=len(string))

      检测字符串中是否包含子字符串 str ,如果指定 beg(开始) 和 end(结束) 范围,则检查是否包含在指定范围内,如果指定范围内如果包含指定索引值,返回的是索引值在字符串中的起始位置。如果不包含索引值,返回-1。
  • index(str, beg=0, end=len(string))

      跟find()方法一样,只不过如果str不在字符串中会报一个异常。
  • isalnum()

      如果字符串至少有一个字符并且所有字符都是字母或数字则返 回 True,否则返回 False。
  • isalpha()

      如果字符串至少有一个字符并且所有字符都是字母则返回 True, 否则返回 False。
  • islower()

      如果字符串中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是小写,则返回 True,否则返回 False。
  • isnumeric()

      如果字符串中只包含数字字符,则返回 True,否则返回 False。
  • isspace()

      如果字符串中只包含空白,则返回 True,否则返回 False。
  • istitle()

      如果字符串是标题化的(见 title())则返回 True,否则返回 False。
  • isupper()

      如果字符串中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是大写,则返回 True,否则返回 False。
  • join(seq)

      以指定字符串作为分隔符,将 seq 中所有的元素(的字符串表示)合并为一个新的字符串。
  • len(string)

      返回字符串长度。
  • ljust(width[, fillchar])

      返回一个原字符串左对齐,并使用 fillchar 填充至长度 width 的新字符串,fillchar 默认为空格。
  • lower()

      转换字符串中所有大写字符为小写。
  • lstrip()

      截掉字符串左边的空格或指定字符。
  • max(str)

      返回字符串 str 中最大的字母。
  • min(str)

      返回字符串 str 中最小的字母。
  • replace(old, new [, max])

      把将字符串中的 str1 替换成 str2,如果 max 指定,则替换不超过 max 次。
  • rfind(str, beg=0,end=len(string))

      类似于 find()函数,不过是从右边开始查找。
  • rindex( str, beg=0, end=len(string))

      类似于 index(),不过是从右边开始。
  • rjust(width,[, fillchar])

      返回一个原字符串右对齐,并使用fillchar(默认空格)填充至长度 width 的新字符串。
  • rstrip()

      删除字符串字符串末尾的空格。
  • split(str="", num=string.count(str))

      num=string.count(str)) 以 str 为分隔符截取字符串,如果 num 有指定值,则仅截取 num 个子字符串。
  • splitlines([keepends])

      按照行(‘\r‘, ‘\r\n‘, \n‘)分隔,返回一个包含各行作为元素的列表,如果参数 keepends 为 False,不包含换行符,如果为 True,则保留换行符。
  • strip([chars])

      在字符串上执行 lstrip()和 rstrip()。
  • swapcase()

      将字符串中大写转换为小写,小写转换为大写。
  • title()

      返回"标题化"的字符串,就是说所有单词都是以大写开始,其余字母均为小写(见 istitle())。
  • upper()

      转换字符串中的小写字母为大写。
  • zfill (width)

      返回长度为 width 的字符串,原字符串右对齐,前面填充0。
  • isdecimal()

      检查字符串是否只包含十进制字符,如果是返回 true,否则返回 false。

 

 

 

  

  


以上是关于Day 3 Python字符串的主要内容,如果未能解决你的问题,请参考以下文章

python学习笔记Day2

python-day02-study

DAY9-字符串笔记整理2018-1-19

python初识-day3

Day 3 Python字符串

Day-3: Python基础