目录
1、输入
使用input()来接收
password = input('请输入您的密码:')
print(f'您输入的密码是{password}')
print(type(password))
请输入您的密码:123
您输入的密码是123
<class 'str'>
input输入的内容会当做字符串处理
2、输出
有三种方式,在之前的笔记中提过:
print('hello world')
name = 'SFD'
print('我的名字是%s' % name)
print(f '我的名字是{name}')
3、表达
python中用单双三引号引起字符串,C语言是双引号。三引号中三个为单为双都可。
对于三引号:
s = '''asd'''
print(type(s))
print(s)
g = """dfg"""
print(type(g))
print(g)
<class 'str'>
asd
<class 'str'>
dfg
而如果改变字符串:
s = '''a
sd'''
print(type(s))
print(s)
g = """d
fg"""
print(type(g))
print(g)
<class 'str'>
a
sd
<class 'str'>
d
fg
这与单双引号不同
s = 'as' \
'd'
print(type(s))
print(s)
g = "df" \
"g"
print(type(g))
print(g)
<class 'str'>
asd
<class 'str'>
dfg
如果要输出的字符串含有单引号,用双引号括起来还可以正常用,但是用单引号就会出错
c = "asd'asd"
print(c)
print(type(c))
asd'asd
<class 'str'>
如果要用单引号,则需求转义字符串中的单引号
c = 'asd\'asd'
print(c)
print(type(c))
这样就能正常打印。
4、下标
下标就是索引。print(str[0]),与C语言相同,从0开始。下标用来查找具体的数据
切片则是截取一部分。公式为序列[开始位置下标:结束位置下标:步长],从开始到结束下标是左闭右开。步长默认为1,正负都可
不写开始位置,表示从0开始
不写结束位置。表示截取到最后
开始和结束不写,表示截取所有
步数为负,表示倒叙截取,从右向左。为正则是从左向右
下标-1表示倒数第一个数据,然后向前类推
s = "abcdefg"
print(s[2:4])
print(s[:4])
print(s[4:])
print(s[:])
print(s[-3:-1])
print(s[-1:-3])#即使用负号来指定位置,也还是只能从左到右做切片。最后一个没结果,也不会报错
print(s[4:1:-1])#第三个参数为步长,默认为1,设定为-1就可以从右到左,如果给的头尾无法满足从右到左提取字符串,就什么也不输出,也不报错
cd
abcd
efg
abcdefg
ef
edc
5、常用操作方法
对字符串做操作,不会影响原字符串,而是生成一个新字符串来表示结果。包括切片。
1、查找
查找子串在字符串的位置和出现次数。运用三个函数
find()
检测某个子串是否包含在这个字符串中,如果在返回这个子串开始的位置下标,否则则返回-1。
语法:字符串序列.find(子串,开始位置下标,结束位置下标),两个下标可省略
rfind()功能相同,查找方向从右侧开始。不过下标还是从左开始。比如print(str.rfind('wart', 10, 11))还是-1
str = "sfasda asdwart gjtyj"
print(str.find('wart'))
print(str.find('wart', 15, 20))
print(str.find('wart', 2, 11))
print(str.find('wart', 2, 14))
print(str.find('wart', 10, 11))
print(str.find('wart', 10, 14))
print(str.find('wart', 11, 14))
print(str.find('qqq'))
10
-1
-1
10
-1
10
-1
-1
index()
检测某个子串是否包含在这个字符串中,如果在返回这个子串开始的位置下标,否则报错。
语法同find
rindex()功能相同,查找方向从右侧开始
str = "sfasda asdwart gjtyj"
print(str.index('wart'))
print(str.index('wart', 15, 20))
print(str.index('wart', 2, 11))
print(str.index('wart', 2, 14))
print(str.index('wart', 10, 11))
print(str.index('wart', 10, 14))
print(str.index('wart', 11, 14))
print(str.index('qqq'))
find显示-1的行,index会直接报错。
count()
返回某个子串在字符串中出现的次数
str = "sfasda asdwart gjtyj"
print(str.count('asd', 2, 12))
print(str.count('asd', 4, 12))
print(str.count('asd', 2, 8))
print(str.count('asd', 5, 9))
2
1
1
0
2、修改
replace()
语法:字符串序列.replace(旧子串,新子串, 替换次数),如果替换次数不写,则全部替换
str = "sfasda asdwart gjtyj"
str1 = str.replace('asd', 'lku')
print(str)
print(str1)
sfasda asdwart gjtyj
sflkua lkuwart gjtyj
调用replace函数后,原有字符串并没有做到修改,修改后的数据是replace函数的返回值,需要另设变量来存储。这样说明str这个字符串是不可变数据类型。数据可分为可变类型和不可变类型。
替换次数即使多了,也没有关系,会替换完所有对象。
split()
按照指定字符分割字符串
语法:字符串序列.split(分割字符, num)。num表示的是分割字符出现的次数,即将来返回数据个数为num+1个
str = "sfasda asdwart gjtyj asdfgbtyh fghasdfhty"
list1 = str.split('asd')
print(list1)
list2 = str.split('asd', 2)
print(list2)
list3 = str.split('asd', 3)
print(list3)
['sf', 'a ', 'wart gjtyj ', 'fgbtyh fgh', 'fhty']
['sf', 'a ', 'wart file:/E:/codes/gjtyj asdfgbtyh fghasdfhty']
['sf', 'a ', 'wart gjtyj ', 'fgbtyh fghasdfhty']
join()
用一个字符或子串合并字符串,即是将多个字符串合并为一个新的字符串
语法:字符或子串.join(多字符串组成的序列)
list = ['sd', 'tf', 'yh']
new_list = '...'.join(list)
print(new_list)
sd...tf...yh
capitalize()
将字符串第一个字符转换为大写。
str = "rygfbhgzs"
print(str.capitalize())
Rygfbhgzs
title()
将字符串每个首字母都转换成大写
str = "rygfbhgzs thynhu ukoqlkn"
print(str.title())
Rygfbhgzs Thynhu Ukoqlkn
lower()
大写转小写
str = "rYgFbHGzs thynhU ukOQLkn"
print(str.lower())
rygfbhgzs thynhu ukoqlkn
upper()
小写转大写
str = "rygfbhgzs thynhu ukoqlkn"
print(str.upper())
RYGFBHGZS THYNHU UKOQLKN
lstrip()
删除字符串左侧空白字符
rstrip()
删除字符串右侧空白字符
strip()
删除字符串两侧空白字符
str = " rygfbhgzs thynhu ukoqlkn "
str1 = str.lstrip()
str2 = str.rstrip()
str3 = str.strip()
print(str1)
print(str2)
print(str3)
rygfbhgzs thynhu ukoqlkn
rygfbhgzs thynhu ukoqlkn
rygfbhgzs thynhu ukoqlkn
ljust()
返回一个原字符串左对齐,并使用指定字符(默认空格)填充至对应长度的新字符串
语法:字符串序列.ljust(长度,填充字符)
rjust()
返回一个原字符串右对齐,并使用指定字符(默认空格)填充至对应长度的新字符串
center()
返回一个原字符串居中对齐,并使用指定字符(默认空格)填充至对应长度的新字符串
str = 'hello'
str
'hello'
str.ljust(10)
'hello '
str.ljust(10, '.')
'hello.....'
str.rjust(10)
' hello'
str.center(10)
' hello '
str.center(11)
' hello '
str.center(10, '.')
'..hello...'
str.center(11, '.')
'...hello...'
3、判断
返回的结果是布尔型数据类型:True或False
startswith()
检查字符串是否以指定子串开头,是则返回True,否则返回False。如果设置开始和结束位置下标,则在指定范围内检查
语法:字符串序列.startswitch(子串,开始位置下标,结束位置下标)
str = "fiwegh2sfv asd kjvbdop sfio"
print(str.startswith('f'))
print(str.startswith('fiw'))
True
True
endswith()
检查字符串是否以指定子串结尾,是则返回True,否则返回False。如果设置开始和结束位置下标,则在指定范围内检查
str = "fiwegh2sfv asd kjvbdop sfio"
print(str.endswith('i'))
print(str.endswith('fio'))
False
True
isalpha()
如果字符串至少有一个字符并且所有字符都是字母则返回True,否则返回False
isdigit()
如果字符串只包含数字则返回True,否则返回False
isalnum()
如果字符串至少有一个字符并且所有字符都是字母或数字则返回True,否则返回False
isspace()
如果字符串中只包含空白,则返回True,否则返回False
str = "fiwegh2sfvasdkjvbdopsfio"
print(str.isalpha())
print(str.isdigit())
print(str.isalnum())
str1 = ""
print(str1.isspace())
str2 = " "
print(str2.isspace())
False
False
True
False
True
4、切割和替换
strip()函数,可以去掉字符串左右两端的空白符,包括空格,\t,\n。如果去掉字符串中间的空白符的函数,可以用replace()函数,两个参数,把所有第一个参数都替换成第二个参数。
切割函数split(),用括号中的参数来切割,用谁切割,字符串中谁就会消失,剩下的部分一个个都放在列表中。
s = "ab_cde_fg"
print(s.split("_"))
print(s.split("_cd"))
print(s)
['ab', 'cde', 'fg']
['ab', 'e_fg']
ab_cde_fg
原字符串不会发生变化
如果想把一个列表中的所有字符串给连接起来,用join函数。join括号里带上要连接的列表,前面加上连接用的字符,比如"_".join(list),也可以不加,直接s = join(list)就把拼接好的字符串给了s。
结束。