Python 字符串(str)介绍

字符串 str  

    作用:

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

字符串的表示方式:

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

1

2

'      单引号<br>  "      双引号<br>  '''    三单引号

"""    三双引号

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

1

2

3

4

''   

""

''''''

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

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

1

2

3

4

'hello'

"hello"

'''hello'''

"""hello"""

单引号和双引号的区别

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

1

2

3

# 示例:

print("I'm a chinese")

print('I am like "python"')

三引号字符串

  作用:

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

1

2

# 示例:

print('welcome to beijing!\nI like Python!\nI am studing')

隐式字符串的字面值拼接

1

2

3

# 示例:

= "I'm a teacher"    'I am studing "python"'

print(s)   # I'm a teacher Iam studing "Python"

用转义序列代表特殊字符

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

   转义格式                    说明

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

\'          单引号(')

\"          双引号

\\          一个反斜杠

\n          换行

\r          返回光标至行首

\t          水平制表符

\v          垂直制表符

\b          倒退 (backspace)

\f          换页

\a          响铃

\0          字符串,字符值为零

\0oo         oo为两位八进制表示的字符

\xXX         XX为两位十六进制表示字符

\uXXXX        UNICODE16的十六进制表示的字符

\UXXXXXXXX     UNICODE32的十六进制表示的字符

1

2

3

4

5

6

# 示例:

print("\'\"\\")

print("ABC\n123")   # "\n" 作用是让光标移到下一行行首

print("ABCD\r12")

print("123\tABC")

print("ABCD\b\b1")  # AB1D

ASCII   编码表:

   $  man ascii <回车>

常用的ASCII编码值:

1

2

3

4

# 字符     十进制    十六进制

  "0"       48       0x30

  "A"       65       0x41

  "a"       97       0x61  

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

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

练习:

1

2

3

4

5

# 看下列字符串有几个字符

'1234abcd'     #8

'5\'4"'        #4

'\"A\x34\056'  #4

'\a\bc\td\n'   #6

raw  字符串 (原始字符串)

  格式:

1

2

3

4

r  '字符串内容'  

r  "字符串内容"

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

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

  作用:

    让转义符号\无效

1

2

3

4

5

# 示例:

= 'C:\newfile\test.py'

print(a)

= r'C:\newfile\test.py'

print(b)

字符串的运算

1

+ 加号用于拼接字符串

1

2

3

4

= "ABCD" + "1234"

print(x) # ABCD1234

= + r'abcd'

print(y) #ABCD123abcd

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

1

2

3

= "ABCD"

+= "1234"

print(x)   #ABCD1234

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

1

2

3

= "ABCD" * 3

print(x)      # ABCDABCDABCD

         # 注: 字符串只能和整数相乘

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

1

2

3

= "123"

*= 4

print(x)   #123123123123

  

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

1

2

3

4

5

6

7

= int(input("请输入一个整数:"))

line1 = "#" * s

print(line1)

line2 = "#" + " " * (s-2+ "#"

print(line2)

print(line2)

print(line1)

字符串的比较

  运算符:

      < <= > >= == != 

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

1

2

3

4

5

6

7

8

# 示例:

"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 序列

    注:字符串是序列的一种

1

2

3

4

5

6

# 示例:

= "welcome to beijing"

"to" in x             # True

"tarena" in x         # False

"hello"  not in x     # True

"e t" not in x        # False  

练习:

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

  否则不预理睬(忽略)

1

2

3

4

5

6

= ("xiaobai")

= input("请输入用户名:")

if in s:

  print("你的名字出现了!")

else:

  pass

字符串的索引和切片操作

  索引  index

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

  语法:

    字符串[整数表达式]

  说明:

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

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

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

1

2

3

4

5

6

7

8

# 示例:

= "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)

1

2

3

4

5

6

= 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,结束索引为最后一个元素的下一个元

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

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

    注:含前不含后

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

# 示例:

= "A     B     C    D     E” "

      [0]   [1]   [2]  [3]   [4]

      [-5]  [-4]  [-3] [-2]  [-1]

= s[1:4]          # x---->"BCD"

= s[1:]           # x---->"BCDE"

= s[:4]           # x---->"ABCD"

= s[:]           # x---->"ABCDE"

= s[1:1]          # x---->""  空字符串

= s[4:2]          # x---->""  空字符串

= s[1:4:1]         # x---->"BCD"

= s[1:4:2]         # x---->"BD"

= s[0::2]          # x---->"ACE"

= s[3:0:-1]        # x---->"DCB"

= s[::-1]          # x---->"EDCBA"

= s[4:-100:-1]       # x---->"EDCBA"

= s[4::-2]         # x---->"EC"

= s[4:0-2]         # x---->"EC"

练习:

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

1

2

= input("请输入一个字符串:")

print(s[1:len(s)-1])

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

      回文示例:

     上海自来水来自海上

     ABCCBA

     13831

     回文是指中心对称的文字

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

1

2

3

4

5

6

= input("请输入一个字符串:")

s2 = s[::-1#将原输入的字符串反转

if == s2:

  print(s,"是回文")

else:

  print(s,"不是回文")

python 运算符优先级

  文档参见:

    python_base_docs_html/python运算符优先级.html

    (需要者,发邮箱给我 cmaoxian@126.com)

python3中常用于序列的函数

  len(x)   返回序列的长度

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

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

字符串编码转换函数:

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

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

练习:

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

1

2

3

4

= input("请输入一个字符串:")

if len(s) != 0:

  print("字符串不为空")

  print(s[0],"的编码值是",ord(s[0]))

整数转为字符串函数

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

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

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

字符串的构造函数:

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

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

  语法:

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

1

2

3

# 示例:

"abc".isalpha()   # 语法是对的

123.isalpha()   # 错的,123是int类型,它没有isalpha方法

  文档参见:
  python_base_docs_html/str.html

 (需要者,发邮箱给我 cmaoxian@126.com)

小结:

  字符串 保存文字信息

1

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

  运算:

1

2

3

#  +  += * *=

#  < <= > >= == !=

#  in , not in <br>#  索引和切片 [整数表达式], [:],[::]

  函数:

1

2

3

#  len(x)  max(x,大),min(x,小)

#  ord(单个字符),chr(整数)

#  bin(x),oct(x),hex(x),str(x)

  方法:

1

2

3

#  s.count(...)

#  s.strip()

#  ...#略

字符串的格式化表达式

  语法格式:

    格式化字符串 % 参数值

    或

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

  说明:

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

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

  作用:

    生成一定的格式的字符串

1

2

3

4

5

6

7

8

# 示例:

fmt = "姓名: %s,  年龄:%d"

name = "tarena"

age =  15

= fmt % (name,age) #s = “姓名: tarena,年龄:15” 

name = "小张"

age =  20

= fmt % (name,age) #s = “姓名:小张,年龄:20”

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

1

2

3

4

5

6

7

8

9

10

11

12

13

占位符合类型码        意义

      %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位)

1

2

3

4

5

6

7

8

9

10

11

12

# 示例:

"%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

  做完上题后在思考:

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

1

2

3

4

5

6

7

8

9

10

11

12

13

= input("请输入第一行文字:")

= input("请输入第二行文字:")

= 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   十进制形式浮点或指数浮点自动转换      %%    等同于一个%字符

  • 23
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

谢木木990907

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值