什么是字符串?
在Python中字符串是一种最常用的数据类型,可以是是中文、英文甚至数字都可以作为字符串。
为什么要有字符串?
只要用到文字的地方当然就需要用到字符串啦!
如何生成字符串?
我们可以使用引号(单引号,双引号都可以)来创建字符串;
'str'
"字符串"
'123'
可以将字符串分配给一个变量进行创建;
str1='abc'
str2='Jack'
可以从外部输入创建;
给一段话赋值可以用三引号'''来做;
text='''你好,吃了吗?
没呢,刚下班,你呢?
我减肥,不吃。'''
变量text长这个样子
'你好,吃了吗?n没呢,刚下班,你呢?n我减肥,不吃。'
print(text)
你好,吃了吗?
没呢,刚下班,你呢?
我减肥,不吃。
字符串的一些操作,和各种打印方法
print(" '*' * 6 :打印6个*",'*' * 6) #打印6个*
'*' * 6 :打印6个* ******
字符串拼接和使用变量打印
拼接和运算
'aaa' + 'BBB'
'aaaBBB'
'aaa' + 'BBB' * 2
'aaaBBBBBB'
('aaa' + 'BBB') * 2
'aaaBBBaaaBBB'
变量替换打印可以使用str.format()函数,通过{}和format()来填写制定。format 函数可以接受不限个参数,位置可以不按顺序。未设置顺序时,默认按照从左到右进行。
"{} {}".format("hello", "world") # 不设置指定位置,按默认顺序
'hello world'
"{0} {1}".format("hello", "world") # 设置指定位置
'hello world'
"{1} {0} {1}".format("hello", "world") # 设置指定位置
'world hello world'
python3.5后format可以简化使用,用f'{var}'来指定变量字符串,如下:
name='jake'
city='sh'
print('format 方法:','Name:{},City:{}'.format(name,city))
print('赋值变量方法:','Name:{a},City:{b}'.format(a=name,b='Shanghai'))
print('3.5后可使用方法:',f'Name:{name},City:{city}')
输出结果
format 方法: Name:jake,City:sh
赋值变量方法: Name:jake,City:Shanghai
3.5后可使用方法: Name:jake,City:sh
还有一种古老的办法是用% ()来格式化字符串然后替换的,比如
print('这是一个%s商品,价值%d' % ('高档',999))
这是一个高档商品,价值999
符 号 描述
%c 格式化字符及其ASCII码
%s 格式化字符串
%d 格式化整数
%u 格式化无符号整型
%o 格式化无符号八进制数
%x 格式化无符号十六进制数
%X 格式化无符号十六进制数(大写)
%f 格式化浮点数字,可指定小数点后的精度
%e 用科学计数法格式化浮点数
%E 作用同%e,用科学计数法格式化浮点数
%g %f和%e的简写
%G %F 和 %E 的简写
%p 用十六进制数格式化变量的地址
格式化数字
"{:.2f}".format(3.1415926)
'3.14'
join() 方法可以用于将序列中的元素以指定的字符连接生成一个新的字符串
'+'.join(['0.1','0.2','0.3'])
'0.1+0.2+0.3'
## 解释:就是用左边的字符,将列表中的字符连接起来。
' '.join(['How','are','you?'])
'How are you?'
大小写转换操作
转换成大写可以使用upper(),转换成小写可以使用lower()
name1='mary'
name2='this is title'
print('变大写 ',name1.upper())
print('变小写',name1.lower())
print('把首字母变大写',f'{name1[0].upper()}{name1[1:]}')
print('尾字母变大写',str(name1[:-1] + name1[-1].upper()))
print('把首字母变大写,函数方法:',name1.capitalize())
print('变成标题,每个字母开头位大写:',f'字符串{name2},变成{name2.title()}')
变大写 MARY
变小写 mary
把首字母变大写 Mary
尾字母变大写 marY
把首字母变大写,函数方法: Mary
变成标题,每个字母开头位大写: 字符串this is title,变成This Is Title
一些经常用到的地方
字符串替换
# 掉头尾的空格
' abba '.strip()
'abba'
# 掉头尾的字符串
'haha i am jack !hahha'.strip('haha')
' i am jack !'
#字符串替换(旧值,新值)
email='jake#sina.com'
email.replace('#','@')
'jake@sina.com'
#用0把字符串填充到目标长度
email.zfill(20)
'0000000jake#sina.com'
#用指定字符填充,ljust左边对齐,rjust右边对齐,2号参数不填为使用空格
email.ljust(20,'-')
'jake#sina.com-------'
email.rjust(20,'-')
'-------jake#sina.com'
email.rjust(20)
' jake#sina.com'
#center原字符串放中间,指定长度,两边填充指定字符。
email.center(20,"^")
'^^^jake#sina.com^^^^'
字符串分割
email='jake#sina.com'
email.split('#')[0]
'jake'
email[email.find('#')+1:]
'sina.com'
## 解释:寻找'#'的索引值,从后一个开始一直取到字符串结束
字符串查询
# 查询字符串中某字符个数
'ccooppyy'.count('c')
2
#大小写判断
'ccooppyy'.islower()
True
'CCOOPPYY'.isupper()
True
# 某字符的索引
# 查询'i am a super man'中'er'的索引编号
'i am a super man'.index('er')
10
'i am a super man'.find('er')
10
'i am a super man'.find('ere')
-1 # 查询不存在时 返回-1,用index取到不存在的值会报错
# 用表达式取字串
'i am a super man jack!'[:'i am a super man jack!'.index('jack')].strip()
'i am a super man'
## 解释:'i am super man jack!'是字符串,'i am super man jack!'.index('jack')取到的是字符串
jack的索引号,[:索引号]表示,从字符串开始取到索引号位置,strip() 去除头尾空格。
此处索引号是17,所以取到字符串0-17的字符(不包含17),就是'i am a super man ',去掉空格,
最后就是'i am a super man'
# 直接使用用索引号来取
'i am a super man jack!'[:17].strip()
'i am a super man'
# 字符串倒叙
'i am a super man jack!'[::-1]
'!kcaj nam repus a ma i'
# 从开头取到结尾,每隔2个取一个
'i am a super man jack!'[0:-1:2]
'ia ue a ak'
小技巧:巧妙获得字符串所有可以用的方法函数
dir('字符串')
['__add__',
'__class__',
'__contains__',
'__delattr__',
'__dir__',
'__doc__',
'__eq__',
'__format__',
'__ge__',
'__getattribute__',
'__getitem__',
'__getnewargs__',
'__gt__',
'__hash__',
'__init__',
'__init_subclass__',
'__iter__',
'__le__',
'__len__',
'__lt__',
'__mod__',
'__mul__',
'__ne__',
'__new__',
'__reduce__',
'__reduce_ex__',
'__repr__',
'__rmod__',
'__rmul__',
'__setattr__',
'__sizeof__',
'__str__',
'__subclasshook__',
'capitalize',
'casefold',
'center',
'count',
'encode',
'endswith',
'expandtabs',
'find',
'format',
'format_map',
'index',
'isalnum',
'isalpha',
'isascii',
'isdecimal',
'isdigit',
'isidentifier',
'islower',
'isnumeric',
'isprintable',
'isspace',
'istitle',
'isupper',
'join',
'ljust',
'lower',
'lstrip',
'maketrans',
'partition',
'replace',
'rfind',
'rindex',
'rjust',
'rpartition',
'rsplit',
'rstrip',
'split',
'splitlines',
'startswith',
'strip',
'swapcase',
'title',
'translate',
'upper',
'zfill']