1. 字符串的定义
字符串的定义
"""
a = 'westos'
b = "what's"
c = """
用户管理系统
1.添加用户
2.删除用户
3.显示用户
....
"""
print(a)
print(b)
print(c)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
可以看到, 这里使用三种方式(单引号, 双引号, 定义多行字符串写在三对双引号中间)
2. 字符串的基本特性
2.1 索引
s = 'hello'定义字符串hello 索引:0 1 2 3 4 索引从0开始
print(s[0])打印字符串的第一个元素
print(s[1])打印字符串的第二个元素
print(s[i])打印字符串的第i+1个元素
# 拿出最后一个字符
print(s[4])
print(s[-1])
# s[start:stop:step] 从satrt开始到end -1结束
# 步长为step
print(s[0:3])
print(s[0:4:2])
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
2.2 字符串的反转
print(s[::-1])
- 1
除了第一个字符之外的其他全部字符
print(s[1:])
- 1
- 2
2.3 字符串的重复
print(s * 10) #将字符串s打印10遍
- 1
2.4 字符串的连接
print('hello ' + 'python') #将两个字符串连接起来打印出来
- 1
2.4 成员操作符
print('he' in s) #如果字符串s中有he元素,就返回True
print('aa' in s) #如果字符串s中有aa元素,就返回True
print('he' not in s) #如果字符串s中没有he元素,就返回True
- 1
- 2
- 3
- 4
hello字符串中有he元素, 因此返回True
hello字符串中没有he元素,因此返回True
2.5 for循环遍历
for i in s: #遍历s字符串, 打印s字符串的每个元素
print(i)
- 1
- 2
3. 利用字符串的切片特性快速判断一个数是不是回文数
3.1 什么是回文数
“回文”是指正读反读都能读通的句子,它是古今中外都有的一种修辞方式和文字游戏,如“我为人人,人人为我”等。
在数学中也有这样一类数字有这样的特征,称为回文数(palindrome number)。
设n是一任意自然数。若将n的各位数字反向排列所得自然数n1与n相等,则称n为一回文数。
例如,若n=1234321,则称n为一回文数;但若n=1234567, 则n不是回文数。
- 1
- 2
- 3
- 4
注意:偶数个的数字也有回文数124421
小数没有回文数
- 1
- 2
3.2 利用字符串的切片特性快速判断一个数是不是回文数
num = input('Num:')
if num == num[::-1]:
print('这个数字是回文数')
else:
print('这个数字不是回文数')
- 1
- 2
- 3
- 4
- 5
可以看到, 输入121来测试, 结果显示, 这个数字是回文数
判断大小写字母、数字、标题
'hello'.istitle() #判断字符串是否是标题(首字母大写)
False
- 1
- 2
'hello'.isupper() #判断字符串是否是大写(只要有一个元素是小写就会输出False)
False
'HELLO'.isupper()
True
- 1
- 2
- 3
- 4
'hello'.islower() #判断字符串是否是小写
True
'Hello'.islower()
False
- 1
- 2
- 3
- 4
a = 'Hello'.upper() #将字符串变为全大写
>>> a
>'HELLO'
>a = 'Hello'.lower() #将字符串变为全小写
>>> a
>'hello'
- 1
- 2
- 3
- 4
- 5
- 6
a = 'Hello'.title() #将字符串变为标题(首字母大写,其余小写)
>>> a
'Hello'
- 1
- 2
- 3
判断文件名称的开头和结尾
判断文件名称的结尾
filename = 'hello.log'
if filename.endswith('.log'):
print(filename)
else:
print('error.file')
- 1
- 2
- 3
- 4
- 5
可以看到, filename = 'hello.loggg’不是以==.log==结尾的文件, 因此, 输出error.file
判断文件名称的开头
url = 'http://172.25.254.14/index.html'
if url.startswith('http://'):
print('爬取内容')
else:
print('不能爬取内容')
- 1
- 2
- 3
- 4
- 5
首先,我们给一个正确的文件开头:http://
可以看到, 能够判断文件开头为http://, 则能够正常执行条件判断成立时的语句块
再次测试时, 将http改为https, 可以看到, 判断不成立时, 则执行else语句内的内容
去除字符串两边的空格
注意:去除左右两边的空格,空格为广义的空格 包括:\t \n
s.lstrip() #hello字符串的左边是\t, lstrip()可以去除字符串左边的空格(\t)
s = ' hello'
>>> s
'\thello'
s.lstrip()
'hello'
- 1
- 2
- 3
- 4
- 5
>>> s = ' hello'
>>> s
' hello'
>>> s.lstrip()
'hello'
- 1
- 2
- 3
- 4
- 5
s.lstrip() #hello字符串的左边是多个空格, lstrip()可以去除字符串左边的空格
s.lstrip() #hello字符串的左右两边都是多个空格, lstrip()可以去除字符串左边的空格, rstrip()可以去除字符串右边的空格, strip()可以去除字符串两边的空格
s = ' hello '
>>> s
' hello '
>>> s.lstrip()
'hello '
>>> s.rstrip()
' hello'
>>> s.strip()
'hello'
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
s.lstrip() #hello字符串的左边是一个制表位, lstrip()可以去除字符串左边的广义空格, strip()可以去除字符串两边的广义空格
s = ' hello'
>>> s
'\thello'
>>> s.strip()
'hello'
- 1
- 2
- 3
- 4
- 5
s.lstrip() #hello字符串的左边是一个制表位,右边是一个换行符, lstrip()可以去除字符串左边的广义空格, strip()可以去除字符串两边的广义空格
s = ' hello\n'
>>> s
'\thello\n'
>>> s.strip()
'hello'
- 1
- 2
- 3
- 4
- 5
s.strip() #helloh字符串strip('h')去掉字符串两边的h
s.strip() #helloh字符串lstrip('h')去掉字符串左边的h
s = 'helloh'
>>> s.strip('h')
'ello'
>>> s.lstrip('h')
'elloh'
- 1
- 2
- 3
- 4
- 5
字符串的对齐
print('学生管理系统'.center(30)) #居中对齐,左右用空格填补,共占30个字符
print('学生管理系统'.center(30,'@')) #居中对齐,左右用@填补,共占30个字符
print('学生管理系统'.center(30,'&')) #居中对齐,左右用&填补,共占30个字符
print('学生管理系统'.ljust(30,'#')) #居左对齐,右侧用#填补,共占30个字符
print('学生管理系统'.rjust(30,'#')) #居右对齐,左边用#填补,共占30个字符
- 1
- 2
- 3
- 4
- 5
字符串的替换
s = 'hello world hello'
# find 找到子字符串,并返回最小的索引
print(s.find('hello'))
print(s.find('world'))
print(s.rfind('hello')) #找到子串,并返回最大的索引
- 1
- 2
- 3
- 4
- 5
- 6
字符串的统计
print('hello'.count('l'))统计字符串中l的个数
print('hello'.count('ll'))统计字符串中ll的个数
print(len('hello'))统计字符串的长度
- 1
- 2
- 3
可以看到,在hello字符串中,l的个数为2,ll的个数为1,hello字符串的长度为5
字符串的分离
s = '172.25.254.250'
s1 = s.split('.') #以.为分隔符分离字符串172.25.254.250
print(s1)
print(s1[::-1]) #将字符串反转
date = '2019-9-1'
date1 = date.split('-') #以"-"为分隔符分离字符串
print(date1)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
字符串的连接
# 连接 通过指定的连接符号 连接每个字符
print(''.join(date1)) #将分离的字符串连接起来
print('/'.join(date1)) #将分离的字符串以/为分隔符连接起来
print('~~'.join('hello')) #将hello字符串用~~连接起来
- 1
- 2
- 3
- 4
字符串的连接(小米笔试题)
题目描述:
> 给定一个句子(只包含字母和空格), 将句子中的单词位置反转,
单词用空格分割, 单词之间只有一个空格,前>后没有空格。
比如: (1) “hello xiao mi”-> “mi xiao hello”
- 输入描述:
> 输入数据有多组,每组占一行,包含一个句子(句子长度小于1000个字符)
- 输出描述:
> 对于每个测试示例,要求输出句子中单词反转后形成的句子
- 示例1:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9