字符串的基本格式
在python中,被两个 ' , '' , ''' 括起来的数据都是字符串
python中的字符串默认使用unicode进行储存。所以,在保存大量字符串的时候记得先转换成bytes类型再进行储存。
转义模式:
如果想在字符串中表示''和""字符,就需要用到转义模式,\表示对后面的命令符进行转义,转义为原本的字符字面意思。
'你好,\‘探险家\’’,就能表示原始字符串的含义,而不发生报错。
同时,如果想表达\符号,而不是转义符号,也需要对\进行转义。
我们可以使用\\表示一个\符号的字面意思。
避开转义:
如果在字符串中包含英文的'和"字符,python默认将其翻译成为是字符串的范围标志,两个''""中间的就表达为字符串。
但是如果想在字符串中包含'"这两个符号,可以交替使用这两个符号,进行精确表达字符串的内容:
例如:"Hello,I'm Python!"
注意,如果使用print将他们打印出来的话,那么他们将不再包含两端的""
但是如果只是将他们赋值再变量中,那么调用该变量将仍然显示""来表示该变量是一个字符串!
简单转义模式:
如果在一个字符串中想要表达多组''和""的话,就需要用到\,也就是反斜杠的转义!
例如:句子"I'm going home!",as he said.这句话,如果要在python中准确地表达的话,可以这样写:
"\"I'm going home!\", as he said."
这里请注意,我们将字符串两端的范围标识符设置为",所以句子内所有需要表达为原始含义的"都要在前面加一个\,来
进行转义,但是并不是所有的字符都需要进行转义,这里的'因为和""不冲突,而无需进行转义!
\自身转义:
但是既然\在字符串中用作于对其后的字符进行功能性转义的话,那么如果我们仍然需要在字符串中添加\符号该怎么办?
可以使用\\来表示原始含义的\
例如:www.baidu.com\asdasd\asdasd在python字符串中可以表达为:
'www.baidu.com\\asdasd\\asdasd'
原始字符串转义:
字符串除了以上说道的简单字符串功能以 外,还包含一些特殊的字符串模式:
长字符串:
以'''"""开头,并以'''"""结尾的字符串,都是长字符串,
在长字符串中,我们可以使用回车后进行自然换行。
原始字符串:在字符串开头加上r就可以了。
原始字符串意在使句子中的\变回原始的字面意思。而不是转义符号!
需要注意的是,原始字符串仅作用于\
同时注意,如果字符串,表达式或者语句在句尾加了一个\,就表示不换行,python表达式句末默认天剑\n,也就是换行表达式,
如果我们使用\但是什么都不加的话,就表示源码换行,但是实际上不需要换行,仅仅是为了更好地编辑源码!
可以使用函数string()和repr()对普通字符串和原始字符串之间进行转换!
字符串的运算、索引和切片:
字符串的运算:
注意:字符串是一种不可变的数据结构,所以任何的切片赋值都是不合法的。所以不支持赋值运算
python支持字符串之间的相加!这会将两个字符串拼接在一起!
print中可以使用,将两个字符串隔开的形式,但是字符串之间会多一个空格进行显示。
但是直接赋值中如果将两个字符串用逗号隔开,直接赋给一个变量的话,那么他们将以元组的方式进行储存。
也可以使用+号的形式将两个字符串相加,那么他们将返回一个合并之后的字符串!并且中间不会保留一个空格!
索引、切片:同列表切片方法!
字符串的操作:
s1 = s.capitalize() #首字母大写
s2 = s.upper() #全部大写
s2_1 = s.lower() #全部小写(注意以上3个都不修改原始字符串格式。必须先将修改的值进行保存的!)
s3 = s.swapcase() #大小写翻转
s4 = s.title() #每个隔开的字符串首字母大写(用特殊字符和数字隔开的字符串)
s5 = s.center(宽长度,填充物) #让该字符串在指定宽度下,用指定填充物进行居中设置!
s6 = s.expandtabs() #会在\t处替换为一个table键,意思是可以使用制表符?运行中报错!
s7 = s.startswith() #判断是否是以什么开头的
s8 = s.find('W',3,10) #找到'W'的索引位置,可以设置切片范围,找到后返回索引数字,找不到得到话返回-1。与方法index功能几乎一样,但是如果找不到的话,就会报错!
s9 = ['1','2','3']
'+'.join(s9) #将某个隔字符号加入到某个列表中,合成一个字符串!
s10 = '1+2+3+4+5'
s10.split(要将之分隔的符号) #join的逆向运算,将某字符串中的某隔字符进行抽取,并将其余部分分解成为一个列表!
s11 = '$#@你好$#@'
s11.strip() #可以将字符串两端的特殊符号进行剥离,在用户登录的时候可以使用这一功能!
s11.rstrip() #rstrip只剥离右边的字符,lstrip()只剥离左边的字符。
s11.replace('你好','呢浩') #将指定字符串替换为另一个指定的字符串!
s12 = '你好,肿瘤君'
table = str.maketrans('你君','拟囧')
s12.translate(table) #针对某种转换表,对句子中的单个或多个的字符进行批量替换!在此之前,需要使用str.maketrans。两个同时使用,可以达到高级replace的效果。生成转换表,之后再对转换表调用translate方法!
s13.count(要计数的字符串) #可以对指定字符串在整体字符串中出现的次数进行计数!也可以规定计数的切片位置!
其他:.isalnum\.isalpha\.isdigit #都返回布尔值
s14.isspace() #如果字符串中如果全部是空格,至少包含一个的话,就返回真值。
3,公共方法(可以在字符串、列表、元组和字典中都可以使用的方法)
s= s.len() #计算长度,返回字符串的长度整数
.count() #计数功能
字符串格式设置的方法:
方法1:%
% 是一个占位符,可以在想要进行替换的地方输入 % 来进行站位,之后可以在 %() 添加需要替换的变量
例如:'''
'''name = input('请输入姓名')
age = input('请输入年龄')
height = input('请输入身高')
msg = '我的名字是%s, 今年%s岁了,身高%s'%(name,age,height)
print(msg)
%s表示替换的内容是字符串string
%d表示替换的内容是数据digit'''
%.3f表示替换的数据为精确到小数点后3位的小树float!
方法2:.format()方法
同样可以使用花括号和.format进行标记和替换,并且能够进行更加精准的设置!
{}代表了方法1的占位符,其中,{}中若为空,则严格按照之后的.format()中的参数顺序进行替换!
若{}中填入数字,则代表.format()括号中索引顺序进行替换!
若{}中填入名字,则将在括号中指定参数和输入的值进行替换!
一般情况下,以上三种指定参数的方法虽然可以一起使用,但是最好还是别这做,因为这样会让代码变得不可阅读!
可以在{}中添加!格式转换符号,其后分别添加:s\r\a表示不同的编码模式:
!s表示字符串版本
!r表示python的字面意思
!a表示使用ascii码进行显示:()
:格式设置符号:(冒号)
:b表示将整数表示为二进制数(注意:使用二进制表示时,不能使用精度和千分位符号的设置)
:c表示将整数视为Unicode码点:(传入的是unicode码点数字,显示码点数字代表的字符)
:d将证书视为十进制证书进行处理,这里是整数的默认使用说明符
:e使用科学表示法来表示小数,用e来进行表示
:E使用科学表示发来表示小数,用E来表示
:f使用小数来表示为定点数
:F使用小数来进行表示,但是特殊字符nan和inf使用大写来表示
:g:G自动在定点表示法和科学表示法之间做出选择。这是默认为小数的说明符,但是在默认情况下至少有一位小数
:n不太明白,书上说要在:g的基础上在插入随即域而异的数字分隔符
:o将整数表示为8进制数
:x:X将整数表示为十六进制数,并使用大/小写字母
:%将数表示为百分比值
设置宽度、精度和千位分隔符
{:10s}
冒号后面直接加一个数字,这个数字就是其宽度,如果宽度超过了字符串的超度的话,那么如果是数字,就默认向右对齐,如果
是字符串的话,就默认向左对齐!
注意:如果插入的表达式的宽度要超过设置的宽度的话,那么就会按字符串的长度进行显示,不受设置宽度的限制!
{:.2f}
冒号后面加一个.4,就表示该处该是为精确到4位的小数。通常只用于在设置float的时候使用
{:,}
表示为数字添加一个千位分隔符
使用{:填充物+<>^对齐指示符号+宽度.(小数指示符),(千位符表示)(小数位数)(数据类型f,d等等)}.format()
可以对要表达的字符串和数据进行精确的显示设置
另外,如果需要在会计上显示+-号,那么就在宽度前面加上一个+号就可以了
如果在宽度钱加上一个=号,那么正负数的数字和正负号将分别想两端对齐!
最后,如果要用特殊模式显示二进制数,8进制和16进制数字的话,可以在符号说明符和宽度之间放一个#!
如果需要设置多个宽度,精度和千分位隔符的话,要按照以下的顺序进行设置:(:'对齐符''长度''千分位符''小数点''精度''数据类型')
print('格式表达:{:^20,.2f}'.format(19749318.719238))
思考:
使用这样的字符串方法可以让我实现一个功能:从Excel中导入和导出数据,这样可以让我的数据变得更加直观化!可以找时间去自己实现一些这个功能!