首先我们先来理解一下字符串是什么东西?
字符我们可以就理解成是一个图形符号,而这个图形符号有特定的含义,文字就是这么发展过来的,当然字符不一定指的是文字,也可以是逗号、句号等等的符号;字符串顾名思义就是多个字符串起来,形成了一定的含义,那么是不是每个字符是个个体,字符串将他们整合起来是个整体,那他们是不是就像列表一样,所以列表的一些方法在字符串上面也是适用的。

str = '今天外面不会下雨,那我们去踢球吧!'

print(str[2:8])				# 切片的方法
print(str[10:])
print('下雨' in str)			# in的使用方法

# 输出结果:
# 外面不会下雨
# 我们去踢球吧!
# True

当我们在对输入框进行判断,并且大小写不敏感的时候,不能够保证用户输入的都是规范写法,这时候我们就需要对字符串进行统一处理,转换成统一规则的字符再进行判断;

str = '今天外面不会下雨,那我们去踢球吧!'

print(str[2:8])
print(str[10:])
print('下雨' in str)

# 输出结果:
# 外面不会下雨
# 我们去踢球吧!
# True

str = 'ToM aNd JeRRy'

print(str.title())      # title()是将每个单词的首字母都转换成大写
print(str.upper())      # upper()是将字符串中的所有字符都转换成大写
print(str.lower())      # lower()是将字符串中的所有字符都转换成小写

if str.lower() == 'tom and jerry':
    print('验证成功')

# 输出结果:
# Tom And Jerry
# TOM AND JERRY
# tom and jerry
# 验证成功

# 如果我们需要判断字符串的字符是否都是大写或者小写字符,可以用下面的方法判断
print('tom and jerry'.islower())        # 判断字符串是否都是小写
print('Tom and Jerry'.islower())
print('TOM AND JERRY'.isupper())        # 判断字符串是否都是大写
print('Tom and Jerry'.isupper())

# 输出结果:
# True
# False
# True
# False

上面只是在交互环境中简单的判断,python也提供了很多方法给我们判断字符串是不是只包含字母或者只包含数字等等,我们使用这些方法就可以很方便的判断输入文本的合法性了

print('tom'.isalpha())      # 判断字符串是否都是字母
print('123'.isdecimal())    # 判断字符串是否都是数字
print('tom123'.isalnum())   # 判断字符串是否只包含数字和字母
print(' \n'.isspace())      # 判断字符串是否只包含空格、制表符和换行
print('Tom'.istitle())      # 判断字符串是否是以大写字母开头,后面都是小写字母

# 输出结果:
# True
# True
# True
# True
# True

单引号和双引号的区别
我们在上面使用print()的时候用的都是单引号,但是我们不管是写作文,还是C语言用的都是双引号,
这里有什么骚操作嘛?
先解答一下第一个问题,他们之间并没有什么区别,都是表示字符串的,那么为什么要两个都存在呢?
我们来设想一下场景,我们要输出的内容是:
Tom’s basketball is lost.

print('Tom's basketball is lost.')
'''
输出结果:
File "C:/Users/Administrator/Desktop/python的基础语法/字符串系列.py", line 80
    print('Tom's basketball is lost.')
               ^
SyntaxError: invalid syntax
发现,报错了,错误在第二个单引号后面
这是因为从左到右第一第二个单引号默认为一对,为第一个字符串,但是后面又紧接着又有字符,不在引号里,导致报错
这时候就需要以下的操作了,这就是单引号、双引号都存在的原因!
'''
print("Tom's basketball is lost.")

如果我们需要判断字符串是否是以规定的字符或字符串开头或结尾,那有什么办法呢?

print('tom and jerry!'.startswith('tom a'))		# 判断字符串是不是以'tom a'开头
print('tom and jerry!'.endswith('jerry'))		# 判断字符串是不是以'jerry'结尾,这里显然不是的,应该是以'jerry!'结尾的

# 输出结果:
# True
# False

有时候我们需要将若干个字符串拼接起来显示,这时候我们又需要怎么操作呢?

first_name = 'tom'
last_name = 'jerry'
print(first_name + ' and ' + last_name)     # 我们可以用加号(+)来合并字符串
'''
输出结果:
tom and jerry
'''
name = first_name + ' and ' + last_name     # 我们也可以将拼接的结果保存在变量中,然后再输出
print(name)

现在我们都是一行一行输出内容的,并且两个print之间自动换行了,那么我们有什么办法让他们在语句中换行呢?

print('Languages:\nPython\nC\nJava')
'''
输出结果:
Languages:
Python
C
Java

这里就需要划重点了,一个非常重要的概念,转义字符!!!
什么叫转义字符呢?我们从字面上来看,转义就是转换意思,就是说将单个字符转换一下它的含义,使他拥有特殊含义;
在我们的编程语言中这些基本通用,因为他是根据ASCII码表来的,什么是ASCII码表自行百度;
其中'\n'的含义就是换行,其实还有很多转义字符,自己百度ASCII码表就知道了,这里不做赘述;
'''

有时候我们需要输出的内容整齐一点,这时候制表符’\t’ 就可以派上用场了,
我们可以这样理解制表符,就像表格一样,每个格子的宽度都一样,我们在一个格子里写好内容之后,
就可以跳到下一个格子,每个格子排布整齐,所以我们的内容输出也是整齐的;

print('Languages:\n\tPython\n\tC\n\tJava')
    '''
    输出结果:
    Languages:
    	Python
    	C
    	Java
    '''

我们发现两个print之间会自动换行,我现在不想让他自己换行,那又该怎么办呢?

print('我就是不换行',end='')
print('我又要换行了')
'''
输出结果:
我就是不换行我又要换行了

我们发现在第一个print的后面多了点东西,end又是什么鬼?
其实我们上面写的都是省略写法,在每个print的后面都会有end='\n',这也就是每个print为啥会自动换行的原因
那么我们可不可以利用一下他呢?比如我们要在每个print的末尾自动加上制表符:
print('我后面有制表符!!!',end='\t')
同样的,我们希望print后面跟什么,直接在end里面填上就好
'''

我们在进行数据交互的时候,经常会因为一些误操作,导致出问题,比如在开头或者结尾的时候多打了个空格,虽然’tom’和’ tom’我们看起来是一样的,但是对于计算机来讲,这是两个字符串,比较这两个字符串就是不一样的,那么我们怎么弥补这个误操作呢?

我们可以灵活的应用这三个方法:
lstrip()    删除字符串左边的空格
strip()     删除字符串两边的空格
rstrip()    删除字符串右边的空格

print(' tom and '.lstrip() + 'jerry')
print(' tom and '.strip() + 'jerry')
print(' tom and '.rstrip() + 'jerry')
'''
输出结果:
tom and jerry
tom andjerry
tom andjerry
'''

有时候我们想要输出的结果好看一点,比如一行的每个值都占20个字符位置,并且想居中显示,那我们该怎么处理呢?

print('Tom'.center(20))			# 占20个字符位置并居中显示
print('Tom'.center(20,'#'))		# 占20个字符位置并居中显示,空白用'#'填充
print('Tom'.ljust(20,'#'))		# 占20个字符位置并左对齐显示,空白用'#'填充
print('Tom'.rjust(20,'#'))		# 占20个字符位置并右对齐显示,空白用'#'填充

# 输出结果:
#         Tom         
# ########Tom#########
# Tom#################
# #################Tom