Python学习day5(Python中的String)

认识字符串

字符串是 Python 中最常用的数据类型之一。我们一般使用引号来创建字符串。创建字符串很简单,只需为变量分配一个值即可。
字符串的标识符:str

一对引号字符串

name1 = 'Tom'
name2 = "Rose"

三引号字符串

name3 = '''Tom'''
name4 = """Rose"""
a = '''I am Tom,
        nice to meet you!'''
b = """I am Rose,
nice to meet you!"""

【注意】:三引号字符串支持换行,而一对引号的字符串不支持换行。

【问题】:如何创建一个字符串I'm Tom ?
办法1:
外层用双引号,避免与内容里的单引号混淆。

c = "I'm Tom"

办法2:
内容里的单引号前面加一个反斜杠\进行转义。

d = 'I\'m Tom'

字符串输入

利用 input() 函数接收用户的输入,input()接收到的内容全部会转化成字符串类型。

name = input("请输入您的名字:")
print(f'您输入的名字是{name}')
print(type(name)) #<class 'str'>

字符串输出

name = "Tom"
print(name)
print('我的名字是%s'%name)
print(f'我的名字是{name}')
print("我的名字是"+name)

字符串下标(索引)

字符串的下标从0开始。

name = "abcdef"
print(name[0]) #a
print(name[2]) #c

测试返回值类型:

str1 = '012345678'
s1 = str1[3]
print(type(s1)) #<class 'str'>

字符串切片

切片是指对操作的对象截取其中一部分的操作。字符串列表元组都支持切片操作。

语法如下:

序列[开始位置下标:结束位置下标:步长]

【注意】:切片不包括结束位置下标对应的数据。截取的部分是一个左闭右开区间。
步长默认为1,如果步长取负数,即代表从右往左进行切片。

str1 = '012345678'
print(str1[2:5:1])  # 234
print(str1[2:5:2])  # 24
str1 = '012345678'
print(str1[2:5])  # 234 -- 如果不写步长,默认步长为1
print(str1[:5])  # 01234 -- 如果不写开始,默认从0开始选取
print(str1[2:])  # 2345678 -- 如果不写结束,表示选取到最后
print(str1[:])  # 012345678 -- 如果不写开始和结束,表示选取所有

负数测试:

# 负数测试
str1 = '012345678'
print(str1[::-1])  # 876543210 -- 如果步长为负数,表示倒叙选取
print(str1[-4:-1])  # 567 -- 下标-1表示最后一个数据,依次向前类推

终极测试:

# 终极测试
str1 = '012345678'
print(str1[-4:-1:1])  # 567
print(str1[-4:-1:-1])  # 不能选取出数据:从-4开始到-1结束,选取方向为从左到右,但是-1步长:从右向左选取
# **** 如果选取方向(下标开始到结束的方向) 和 步长的方向冲突,则无法选取数据
print(str1[-1:-4:-1])  # 876

测试返回值类型:

str1 = '012345678'
s1 = str1[-4:-1:1]
print(type(s1))#<class 'str'>

可见字符串的切片操作截取的部分仍然是一个字符串。

字符串的常用操作方法

1.字符串的查找

字符串查找方法是查找子串在字符串中的位置或出现的次数。

  • find():检测某个字串是否包含在这个字符串中,如果包含,则返回这个子串开始的位置下标,否则返回-1
mystr = "hello world and java and c++ and Python"
print(mystr.find("and")) #12
print(type(mystr.find("and"))) #<class 'int'>
print(mystr.find("and",15,30))  #21
print(mystr.find('ands')) #-1
  • index()::检测某个字串是否包含在这个字符串中,如果包含,则返回这个子串开始的位置下标,否则报异常ValueError: substring not found
mystr = "hello world and java and c++ and Python"
print(mystr.index("and")) #12
print(type(mystr.index("and"))) #<class 'int'>
print(mystr.index("and",15,30))  #21
print(mystr.index('ands')) #ValueError: substring not found
  • rfind():和find()功能相同,但查找方向为右侧开始。
  • rindex():和index()功能相同,但查找方向为右侧开始。
  • count():返回某个子串在子串中出现的次数。
mystr = "hello world and java and c++ and Python"
print(mystr.count("and")) #3
print(mystr.count("and",15,30))  #1
print(mystr.count('ands')) #0

2.字符串的修改

  • replace():替换
mystr = "hello world and java and c++ and Python"
print(mystr.replace("and","和"))
#hello world 和 java 和 c++ 和 Python

print(mystr.replace("and","和",1))
#hello world 和 java and c++ and Python

print(mystr.replace("and","和",10))
#替换次数超过子串在字符串中出现次数,全部替换,不报错
#hello world 和 java 和 c++ 和 Python
mystr.replace("and","和")
str1 = mystr.replace("and","和")
print(mystr)#hello world and java and c++ and Python
print(str1)#hello world 和 java 和 c++ 和 Python

【注意】:replace()函数并不会修改原有字符串的值,但他的返回值可以接收到修改后的字符串。
【注意】:数据按照是否能直接修改可分为可变类型不可变类型两种。字符串类型的数据修改的时候不能改变原有的字符串,属于不可变类型。

  • split():按照指定字符分割字符串
mystr = "hello world and java and c++ and Python"
print(mystr.split("and"))
#['hello world ', ' java ', ' c++ ', ' Python']

print(mystr.split("and",2))
#['hello world ', ' java ', ' c++ and Python']

print(mystr.split(" "))
#['hello', 'world', 'and', 'java', 'and', 'c++', 'and', 'Python']

print(mystr.split(" ",2))
#['hello', 'world', 'and java and c++ and Python']

【注意】:如果分割字符是原有字符串的子串,分割后会丢失该子串。

print(type(mystr.split(" ",2)))#<class 'list'>

分片函数的返回值结果是一个列表类型:list

  • join():用一个字符或子串合并字符串,将多个字符串合并为一个字符串。
list1 = ['hello','world','and','python']
print("--".join(list1))#hello--world--and--python

t1 = ('hello','world','and','python')
print("===".join(t1))#hello===world===and===python
  • capitalize():将字符串第一个字符转换成大写。
  • title():将字符串每个单词的首字母转换成大写。
  • lower():将字符串中大写转小写。
  • upper():将字符串中小写转大写。
  • lstrip():删除字符串左侧空白字符。
  • rstrip():删除字符串右侧空白字符。
  • strip():删除字符串两侧空白字符。
  • ljust():返回一个原字符串左对齐,并使用指定字符(默认空格)填充至对应长度的新字符串。
  • rjust():返回一个原字符串右对齐,并使用指定字符(默认空格)填充至对应长度的新字符串。
  • center():返回一个原字符串居中对齐,并使用指定字符(默认空格)填充至对应长度的新字符串。

3.字符串的判断

  • startswith():检查字符串是否以指定子串开头,是则返回True,否则返回False。如果设置开始和结束位置下标,则在指定范围内检查。
  • endswith():检查字符串是否以指定子串开头,是则返回True,否则返回False。如果设置开始和结束位置下标,则在指定范围内检查。
  • isalpha():如果字符串至少有一个字符并且所有字符都是字母则返回True,否则返回False。
  • isdigit():如果字符串只包含数字则返回True,否则返回False。
  • isalnum():如果字符串至少有一个字符并且所有字符都是字母或数字则返回True,否则返回False。
  • isspace():如果字符串中只包含空白,则返回True,否则返回False。

总结

三引号字符串支持换行,而一对引号的字符串不支持换行。

1.字符串的查找

  • find()
  • index()
  • rfind()
  • rindex()
  • count()

2.字符串的修改

  • replace()
  • split()
  • join()
  • capitalize()
  • title()
  • lower()
  • upper()
  • lstrip()
  • rstrip()
  • strip()
  • ljust()
  • rjust
  • center()

3.字符串的判断

  • startswith()
  • endswich
  • isalpha()
  • isdigit()
  • isalnum()
  • isspace()
发布了68 篇原创文章 · 获赞 57 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_43598138/article/details/104625288