Python 字符串(str)介绍

字符串 str  

    作用:

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

字符串的表示方式:

    在非注释中,凡是用引号括起来的部分都是字符串

  '      单引号
  " 双引号
  ''' 三单引号   """ 三双引号

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

''    
""
''''''
""""""
# 注:  空字符串的布尔值bool(x) 为False

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

'hello'
"hello"
'''hello'''
"""hello"""

单引号和双引号的区别

  单引号内的双引号不算结束符
  双引号内的但引号不算结束符

# 示例:
print("I'm a chinese")
print('I am like "python"')

三引号字符串

  作用:

  三引号字符串中的换行会自动转换为换行符'\n'
  三引号字符串内可以包含单引号和双引号

# 示例:
print('welcome to beijing!\nI like Python!\nI am studing')

隐式字符串的字面值拼接

# 示例:
s = "I'm a teacher"    'I am studing "python"'
print(s)   # I'm a teacher Iam studing "Python"

用转义序列代表特殊字符

  字符串字面值中用字符反斜杠(\)后跟一个或一些字符代表特殊的一个字符

   转义格式                    说明

  \'          单引号(')
  \"          双引号
  \\          一个反斜杠
  \n          换行
  \r          返回光标至行首
  \t          水平制表符
  \v          垂直制表符
  \b          倒退 (backspace)
  \f          换页
  \a          响铃
  \0          字符串,字符值为零
  \0oo         oo为两位八进制表示的字符
  \xXX         XX为两位十六进制表示字符
  \uXXXX        UNICODE16的十六进制表示的字符
  \UXXXXXXXX     UNICODE32的十六进制表示的字符
# 示例:
print("\'\"\\")
print("ABC\n123")   # "\n" 作用是让光标移到下一行行首
print("ABCD\r12")
print("123\tABC")
print("ABCD\b\b1")  # AB1D

ASCII   编码表:

   $  man ascii <回车>

常用的ASCII编码值:

# 字符     十进制    十六进制
  "0"       48       0x30
  "A"       65       0x41
  "a"	    97       0x61	

求序列长度的函数len(x)

  len(x)  返回字符串中字符的个数

练习:

# 看下列字符串有几个字符
'1234abcd'     #8
'5\'4"'        #4
'\"A\x34\056'  #4
'\a\bc\td\n'   #6

raw  字符串 (原始字符串)

  格式:

  r  '字符串内容'  
  r  "字符串内容"
  r  '''字符串内容'''
  r  """字符串内容"""

  作用:

    让转义符号\无效

# 示例:
a = 'C:\newfile\test.py'
print(a)
b = r'C:\newfile\test.py'
print(b)

字符串的运算

+ 加号用于拼接字符串
x = "ABCD" + "1234"
print(x) # ABCD1234
y = x + r'abcd'
print(y) #ABCD123abcd

+= 运算符用于原字符串与右侧字符串拼接,变量绑定新生成的字符串

x = "ABCD"
x += "1234"
print(x)   #ABCD1234

* 运算符用于生成重复的字符串

x = "ABCD" * 3 
print(x)      # ABCDABCDABCD
         # 注: 字符串只能和整数相乘

 *=  用于生成重复的字符串,变量绑定新生成的字符串

x = "123"
x *= 4
print(x)   #123123123123

  

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

s = int(input("请输入一个整数:"))
line1 = "#" * s
print(line1)
line2 = "#" + " " * (s-2) + "#"
print(line2)
print(line2)
print(line1)

字符串的比较

  运算符:

      < <= > >= == != 

  规则:
    依次按编码值进行两两字符比较,一旦不同,则比较结束,返回比较
    结果.当编码值与长度完全相同时,两个字符串相同

# 示例:
"A" < "B"           # True
"a" < "B"           # False
"ABC" > "ABB"       # True
"ADC" >= "ACD"      # True
"AB" < "ABC"        # True
"AD" > "ABC"        # True
"abc" != "ABC"      # True

in 和 not in 运算符  

  作用:

    in  用于序列,字典,集合中,用于判断某个值是不存在于容器中,如果存在则返回True,否则返回False

    not in 与 in 运算符返回结果相反

  格式:

    对象 in 序列

    注:字符串是序列的一种

# 示例:
x = "welcome to beijing"
"to" in x             # True
"tarena" in x         # False
"hello"  not in x     # True
"e t" not in x        # False   

练习:

  写程序,输入一个长长的字符串,判断你的姓名是否存在于用户输入的字符串中,如果存在则打印:"你的名字出现了"

  否则不预理睬(忽略)

d = ("xiaobai")
s = input("请输入用户名:")
if d in s:
  print("你的名字出现了!")
else:
  pass

字符串的索引和切片操作

  索引  index

    python 字符串是不可以改变的字符序列

  语法:

    字符串[整数表达式]

  说明:

    python序列都可以用索引(index)来访问序列中的对象

    python序列正向索引是从0开始的,第二个索引为1,最后一个为:len(s)-1

    python序列的反向索引是从-1开始的,-2代表倒数第二个,以此类推,...第一个是 -len(s)

# 示例:
s = "A     B     C    D     E"
  # [0]   [1]   [2]  [3]   [4]
  # [-5]  [-4]  [-3] [-2]  [-1] 
s[1]  #B
s[-1] #E
s[-4] #B
s[-8] #越界错误 IndexError

练习:
  输入一个字符串,打印如下内容:
  1.打印这个字符串的第一个字符
  2.打印这个最非常的最后一个字符
  3.如果这个字符串的长度是奇数,打印中间这个字符:
     注:求字符串长度的函数是 len(x)

s = input("请输入一个字符串:")
print(s[0])
print(s[-1])
if len(s)%2==1:
  # 如果是奇数
  print(s[len(s)//2])

切片 slice

  作用:

    从字符串序列中取出相应的元素,重新组成一个新的字符串序列

  语法:

    s[(开始索引b):(结束索引e)(:(步长))]

    注:小括号()括起的部分代表可省略

  说明:

    开始索引是切片开始切下的位置,0代表第一个元素,代表第二个元素,-1 代表最后一个元素....

    结束索引是切片的终止索引(但不包含终止点)

    步长是切片每次获取完当前元素后移动的方向和偏移量

    没有步长,相当于步长为1(默认为1)

    当步长为整数是,取正向切片:

    开始索引默认为0,结束索引为最后一个元素的下一个元

    当步长为负整数时,取反向切片:

    反向切片时,默认的起始位置为最后一个元素,终止位置,是第一个元素的前一个位置

    注:含前不含后

# 示例:
s = "A     B     C    D     E” "
      [0]   [1]   [2]  [3]   [4] 
      [-5]  [-4]  [-3] [-2]  [-1] 

x = s[1:4]          # x---->"BCD"
x = s[1:]           # x---->"BCDE"
x = s[:4]           # x---->"ABCD"
x = s[:]           # x---->"ABCDE"
x = s[1:1]          # x---->""  空字符串
x = s[4:2]          # x---->""  空字符串
x = s[1:4:1]         # x---->"BCD"
x = s[1:4:2]         # x---->"BD" 
x = s[0::2]          # x---->"ACE" 
x = s[3:0:-1]        # x---->"DCB"
x = s[::-1]          # x---->"EDCBA"
x = s[4:-100:-1]       # x---->"EDCBA"
x = s[4::-2]         # x---->"EC"
x = s[4:0-2]         # x---->"EC"

练习:

   1. 写一个程序,输入一个字符串,把字符串的第一个字符和最后一个字符去掉后,打印出处理后的字符串

s = input("请输入一个字符串:")
print(s[1:len(s)-1])

  2. 输入任意一个字符串,判断这个字符串是否是回文

      回文示例:

     上海自来水来自海上

     ABCCBA

     13831

     回文是指中心对称的文字

     任意输入一段文字,判断是否是回文

s = input("请输入一个字符串:")
s2 = s[::-1] #将原输入的字符串反转
if s == s2:
  print(s,"是回文")
else:
  print(s,"不是回文")

python 运算符优先级

  文档参见:

    python_base_docs_html/python运算符优先级.html

    (需要者,发邮箱给我 [email protected]

python3中常用于序列的函数

  len(x)   返回序列的长度

  max(x)   返回序列的最大值的元素

  min(x)   返回序列的最小值的元素

字符串编码转换函数:

  ord(c)  返回一个字符c的unicode编码值

  chr(i)  返回i这个值所对应的字符

练习:

  写一个程序,输入一段字符串,如果字符串不为空,则把字符串的第一个字符的编码值打印出来

s = input("请输入一个字符串:")
if len(s) != 0:
  print("字符串不为空")
  print(s[0],"的编码值是",ord(s[0]))

整数转为字符串函数

  bin(i)   将整数转换为二进制的字符串

  oct(i)   将整数转换为八进制的字符串

  hex(i)   将整数转换为十六进制的字符串

字符串的构造函数:

  str(obj="")   将对象转换为字符串

python3 常用的字符串方法(method(.的))

  语法:

    对象.方法名(方法传参)

# 示例:
"abc".isalpha()   # 语法是对的
123.isalpha()   # 错的,123是int类型,它没有isalpha方法

  文档参见:
  python_base_docs_html/str.html

 (需要者,发邮箱给我 [email protected]

小结:

  字符串 保存文字信息

#  ''  ""   '''abc'''  """ hello"""

  运算:

#  +  += * *= 
#  < <= > >= == !=
#  in , not in 
# 索引和切片 [整数表达式], [:],[::]

  函数:

#  len(x)  max(x,大),min(x,小)
#  ord(单个字符),chr(整数)
#  bin(x),oct(x),hex(x),str(x)

  方法:

#  s.count(...)
#  s.strip()
#  ...#略

字符串的格式化表达式

  语法格式:

    格式化字符串 % 参数值

    或

    格式化字符串 % (参数值1,参数值2,...)

  说明:

    % 右侧为参数值,当有多个参数值是用括号()括起来,各参数间用逗号(,)分隔

    % 左侧为格式化字符串,中间的 % 开头的字符为占位符合类型码

  作用:

    生成一定的格式的字符串

# 示例:
fmt = "姓名: %s,  年龄:%d" 
name = "tarena"
age =  15
s = fmt % (name,age) #s = “姓名: tarena,年龄:15”  
name = "小张"
age =  20
s = fmt % (name,age) #s = “姓名:小张,年龄:20”

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

占位符合类型码        意义
      %s 	   # 字符串,使用str(x) 函数转换
      %r 	  # 字符串,使用sepr(x) 函数转换
      %c 	   # 整数转为单个字符
      %d	   # 整数转为十进制整数
      %o  	   # 整数转为八进制整数
      %x    	   # 整数转为十六进制整数(字符a-f小写)
      %X    	   # 整数转为十六进制整数(字符A-F小写)      
      %e	  # 指数型浮点数(e小写),如2.9e+10
      %E 	   # 指数型浮点数(E小写),如2.9E+10
      %f,%F	  # 浮点十进制形式
      %g,%g	  # 十进制形式浮点或指数浮点自动转换
      %% 	   # 等同于一个%字符

占位符和类型码之间的格式语法

  % [- + 0 宽度.精度]  类型码

  注:[]里的内容可以省略不写

  -    左对齐(默认为右对齐)

  +    显示正号

  宽度 整个数据输出的宽度

  精度 保留小数点后多少位(默认为6位)

# 示例:
"%d"         %123     		   # "123"	
"%10d"       %123	 	   # "123"
"%010d"      %123		   # "0000000123" 
"%-010d"     %123 		   # "123       "
"%+10d"      %123		   # "	 +123"
"%10s"       %"ABC"	      	   # "	  ABC"
"%f"         %3.1415926535897123   # "3.141593" 
"%.10f"      %3.1415926535897123   # "3.1415926536"
"%7.2f"      %3.1415926535897123   # "   3.14"
"%+7.2f"     %3.1415926535897123   # "  +3.14"
"%-+7.2f"    %3.1415926535897123   # "+3.14  "

练习:

  写一个程序,输入三行文字,让这三行文字依次以20个字符的宽度右对齐输出

  如:

    请输入第1行:hello china

    请输入第2行:tanena

    请输入第3行:a

  打印如下:

    hello china

    tanena

    a

  做完上题后在思考:

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

a = input("请输入第一行文字:")
b = input("请输入第二行文字:")
c = input("请输入第三行文字:")
# 求三个字符串的最大长度
max_len = len(a)  #设为最大值 方法2 max_len= max(len(a),len(b),len(c))
if max_len < len(b):
  max_len = len(b)
if max_len < len(c):
  max_len = len(c)
# 左侧手动添加空格
print(" " * (max_len-len(a))+a)
print(" " * (max_len-len(b))+b)
print(" " * (max_len-len(c))+c)

占位符合类型码        意义      %s    字符串,使用str(x) 函数转换      %r    字符串,使用sepr(x) 函数转换      %c    整数转为单个字符      %d   整数转为十进制整数      %o     整数转为八进制整数      %x               整数转为十六进制整数(字符a-f小写)      %X               整数转为十六进制整数(字符A-F小写)            %e   指数型浮点数(e小写),如2.9e+10      %E    指数型浮点数(E小写),如2.9E+10      %f,%F   浮点十进制形式      %g,%g   十进制形式浮点或指数浮点自动转换      %%    等同于一个%字符

猜你喜欢

转载自www.cnblogs.com/Axianba/p/11047067.html
今日推荐