Python编程语言下的字符串及编码

字符串 str:

    作用:用来记录文本(文字)信息


字符串的表示方法:
    在非注释中,凡是用引号括起来的部分都是字符串
     '单引号
     "双引号
     '''三单引号
     """三双引号


空字符串的字面值表示方式:

     '
     "
     '''
     """


非空字符串的字面值表示方式:

     'hello'
     "hello"
     '''hello'''
     """hello"""
单引号和双引号的区别:
    单引号内的双引号不算结束符
    双引号内的单引号不算结束符
    例:print("i'm a teacher")
        print('hello "tarena"')
        print("我是'''三单引")


三引号字符串:
作用:
    三引号字符串的换行会自动转化为换行符‘\n’
    三引号内可以包含单引号和双引号
如何表示:
    'welcome to beijing \nI like python!\nI am studing!'
例:s = '''welcome to beijing !
           I like python!
           I am studing!'''


用转义序列代表特殊字符:
   字符串字面值中,用字符反斜杠(\)后跟一些字符代表一个字符


字符串中的转义字符表:
\'  代表一个单引号
\"  一个双引号
\\  代表一个反斜杠
\n  换行
\r  返回光标至行首
\f  换页
\t  水平制表符
\v  垂直制表符
\b  倒退
\0  空字符,字符值为0
\0oo   oo为两位八进制代表的字符
\xXX   XX为两位十六进制代表的字符
\uXXXX unicode16的十六进制代表的字符
\uXXXXXXXX unicode32的十六进制代表的字符
Python编程语言下的字符串及编码

ASCII编码
   ASCII 字符表
   $ man ascii


常用ASCII编码:
字符      十进制        十六进制
'0'         48           0x30
'A'         65           ox41
'a'         97           0x61


raw字符串(原始字符串)
字面值格式:
r'字符串内容'
r"字符串内容"
r'''字符串内容'''
r"""字符串内容"""


作用:让转义字符\无效
示例:
    a='C:\newfile\test.py'
    print(a)
    print(len(a))  #得到字符串的长度
    a=r'C:\newfile\test.py'
    print(a)
    print(len(a))




字符串的运算:
   算术运算符:
    +   +=   *   *=
    + 加号运算符用于字符串的拼接
      例:x='abcd'+'efg'
          print(x)   #abcdefg
          x += '123'
  print(x)   #abcdefg123
      
    * 运算符用于生成重复的字符串
      例:x='123'
          y=x * 2       #y='123123 '
  y=x *= 3       #y='123123123 '
     ·字符串只能和整数相乘
          x=3
          x *= '123'         #x='123123123'


练习:写一个程序,打印一个高度为4的矩形方框,
      要求输入一个整数,此整数代表矩形的宽度,输出此矩形
      如:请输入宽度:10
      打印如下:
        ##########
#        #
#        #
##########






字符串的比较运算
    运算符:
     >  >=   <  <=  ==  !=
    示例:
       ‘A’< 'B'   #True
‘B’< 'a'   #True
‘ABC’> 'AB'   #True
‘AD’< 'ABC'   #False
‘ABC’== 'abc'   #False
         


in / not in 运算符
   作用:
   in用于序列,字典,集合中,用于判断某个值是否存在于容器中,如果存在则返回True,否则返回False
   格式:
   对象 in 容器
   示例:
   s = 'welcome to tarena!'
   'to' in s      # True
   'wei' in s     # False




字符串的索引操作
    python字符串str是不可以改变的字符序列
    索引语法
       字符串[整数表达式]
    说明: 
    ·python 序列都可以用索引(index)来访问序列中的对象(元素)
    ·python 序列的正向索引是从0开始的,第二个索引为1,最后一个索引为len(s)-1
    ·python 序列的反向索引是从-1开始的,-1代表最后一个,-2代表倒数第二个,第一个是-len(s)
      
示例:s = 'ABCDE'
      print(s[0])   # A  
      print(s[1])   # B 
      print(s[4])   # E
      print(s[-1])   # E 
      print(s[-5])   # A  




切片 slice
   从字符串序列中取出相应的元素重新组成一个字符串序列
   语法:
   s[(开始索引b):(结果索引e)(:(步长s))]
   注:小括号()括起的部分代表可省略
   语法说明:
   开始索引是切片开始切下的位置,0代表第一个,
   结束索引是切片的终止索引(但不包含终止点)
   步长是切片每次获取完当前元素后移动的方向和偏移量
   (1)没有步长,相当于取值完成后向右移动一个索引的位置(默认为1)
   (2)当步长为正数时,取正向切片;
        步长默认为1,开始索引默认为0;
        结束索引默认为len(s)
    (3)当步长为负整数时,取反向切片
        反向切片时,默认的起始位置为最后一个元素,终止位置是第一个元素的前一个位置
示例:s = 'ABCDE'
      a = s[1:4]   # a--> 'BCD'
      a = s[:4]    # a--> 'ABCD'
      a = s[2:]    # a--> 'CDE'
      a = s[0:2]   # a--> 'AB'
      a = s[1:1]   # a--> ''   # ''表示空字符串
      a = s[3:1]   # a--> ''
      a = s[0::2]  # a--> 'ACE'
      a = s[0::3]  # a--> 'AD'
      a = s[::]    # a--> 'ABCDE'---->相当于a = s[0:4:1]  
      a = s[2::2]  # a--> 'CE'
      a = s[::-1]  # a--> 'EDCBA'  
      a = s[3::-2] # a--> 'DB'




练习:
    1、输入一个字符串,打印如下内容
      (1)打印这个字符串的第一个字符
       (2)打印这个字符串的最后一个字符
       (3)如果这个字符串长度是奇数,打印中间这个字符
       注:求字符串长度的函数为len(s)
    2、输入任意一个字符串,判断这个字符串是否是回文,回文是指中心对称的文字
       例:上海自来水来自水上(ABCCBA)
     
Python3中常用的序列函数:
len(seq)  返回序列的长度
max(x)    返回序列的最大值元素 
min(x)    返回序列的最小值元素


示例:
  s = "ABCD"
  print(len(s))  #  4
  print(max(s))  #  D
  print(min(s))  #  A


  len('a b\nc')=5 ##空格算一个字符,“\n”为换行符,算一个字符






字符串编码转化函数:
ord(c)  返回一个字符串的Unicode编码值
chr(i)  返回i这个值对应的字符
示例:
print(ord('A'))  # 65
print(ord‘中’)  # ???


练习:
1、写一个程序,输入一段字符串,如果字符串不为空,则把第一个字符的编码打印出来
2、写一个程序,输入一个整数值(0~65535),打印出这个数值所对应的字符




整数转化为字符串函数:
hex(i) 将整数转化为十六进制的字符串
oct(i) 将整数转化为八进制的字符串
bin(i) 将整数转化为二进制的字符串   binary二进制


字符串的构造(创建)函数 str
  str (obj='')  将对象转化为字符串


示例:
  s = 123

  print(str(s) + '456')   # 123456



常用的字符串方法:
见:str.html
   字符串的调用语法
   对象.方法名(方法传参)
  注:方法的调用属于表达式,通常可以返回一个值或None
  示例:
      'abc'.isalpha()     #正确
      'abc中文'.isalpha()     #正确
      'abc123'.isalpha()     #错误
      123.isalpha()       #错误


空白字符:指空格,水平制表符(\t),换行符(\n)等不可见字符


字符串的格式化表达式:
作用:生成一定格式的字符串
运算符:%
语法格式:
    格式字符串 % 参数值
    格式字符串 % (参数值1,参数值2,...)
说明:
    格式化字符串中以%开头的为占位符,占位符的位置将用参数值替换
    %右侧为参数值,当有多个参数值时用括号()括起来,之间用逗号(,)分割
示例;
    fmt = “姓名:%s,年龄:%d”
    name = 'tarena'
    age = 15
    print (fmt % (name,age))


格式化字符串的占位符和类型码:

见:str.html

Python编程语言下的字符串及编码

    


占位符和类型码之间的格式语法:
% [格式语法] 类型码
   格式语法:
    -  左对齐
    +  显示正负
    0  补零
    宽度(整数)
    宽度·精度(整数)
示例:
    '%10d' % 123        #'       123'
    '%-10d' % 123       #'123       '
    '%10s' % 'abc'      #'       abc'
    '%-5s' % 'abc'      #'abc  '
    '%05d' % 123        #'00123'
    '%7.3f' % 3.1415926  # '  3.141'
   '%07.3f' % 3.1415926  # '003.141'
Python编程语言下的字符串及编码

练习:
输入三行文字,让这些文字依次以20字符的宽度右对齐输出,
如:请输入第1行:hello world
请输入第2行:abcd
请输入第3行:a
输出结果为:
           hello world
                  abcd
                     a

完成后思考:能否以最长字符串的长度进行右对齐显示(左侧填充空格)


****字符串文本解析方法 split 和 join:***
S.split(sep = None)
  将字符串,使用sep作为分隔符分割S字符串,返回分割后的字符串的列表,
  当不给定参数时,用空白字符作为分隔符进行分割
S.join(iterable)
  用可迭代对象中的字符串,返回一个中间用S进行分割的字符串


例:
  s = 'Beijing is capital'
  L = s.split(' ')     #L=['Beijing','is','capital']


  s = '\\'
  L = ['C:','Programe files','python3']
  s2 = s.join(L)     #s2 = b'C:\Programe files\python3