目录:https://www.jianshu.com/p/863c446364a8
一、Python 字符串的创建
字符串是 Python 中最常用的数据类型。我们可以使用单引号或双引号来创建字符串。
创建字符串很简单,只要为变量分配一个值即可。
实例:
var1=" Hello World! "
var2=' Hello Python '
如果字符串中含有单引号或双引号则用另外一个即可,或者用\转移也可以。
var3=" I'm yxt. "
var4=' 百度里分为"新闻","网页","知道"等搜索版块。 '
var5='I\'m a little girl'
二、Python 转义字符
# \ 续行符
#当我们要写的代码很多时,可以使用续行符将他分成多行。与print(3+2)结果相同
print\
(3+2)
#\\ 反斜杠符号
#如果我们想要输出反斜杠时,就用\\
>>>print("hello\\word")
hello\word
#\' 单引号
#用来输出单引号
>>>print('I\'m xt')
I'm xt
#\" 双引号
#用来输出双引号
>>>print("I am \"xt\" ")
I am "xt"
# \a 响铃
#在命令行界面时,例如我们为程序设置一个响铃,运行结束后会响铃通知我们
print("\a")
# \b 退格符(Backspace)
#删除退格符前的单个字符
>>>print("ab\bcd")
acd
# \000 空
#输出一个空格
>>>print("a\000b")
a b
# \n 换行
#用来换行
>>>print("abc\ndef")
abc
def
# \t 横向制表符
#相当于一个tab键 ,四个空格
>>>print("a\tb")
a b
# \r 回车符
#让光标回到行首,覆盖\r 之前的内容(在命令提示符中可以实现该功能,在IDLE中会原样输出即IDLE中无法实现功能。)
>>>print("abc\rdef")
def
#\f 换页符
#在文件读写时,用于输出分页。
>>>print("abc\fdef")
abc
def (这里的def自动分到下一页)
#\0yy 八进制数,yy代表的字符
>>>print("\012")
#这里的结果为换行
\xyy 十六进制数,yy代表的字符
例如:\x0a代表换行 (同上)
三、python 字符串的运算符
实例
假设变量a为"Hello",变量b为"Python"
# + (字符串连接)
>>>a+b
'HelloPython'
# * (重复输出字符串)
>>>a*2
"HelloHello"
# [ ] (通过索引获取字符串中字符)
>>>a[1]
'e'
# [ : ](截取字符串中的一部分)
>>>a[1:5]
'ello'
# in (成员运算符-如果字符串中包含给定字符返回True)
>>>print("o" in a)
True
# not in (成员运算符 - 如果字符串中不包含给定的字符返回 True )
>>>print("a" not in a)
True
#r/R(原始字符串 - 原始字符串:所有的字符串都是直接按照字面的意思来使用,没有转义特殊或不能打印的字符。原始字符串除在字符串的第一个引号前加上字母"r"(可以大小写)以外,与普通字符串有着几乎完全相同的语法。)
>>>print(r"\n")
\n #这里的结果原样输出,没有转义
四、Python字符串格式化
字符串格式化输出分为两类:原始字符串格式化、format函数( 3.8越来越不支持这样printf输出风格一样的字符串格式化。 而是改用format函数与 rjust()函数。)
下面先来说说原始字符串格式化:
实例:
>>> print("我叫%s,今年%d岁。"%("小明",10))
我叫小明,今年10岁。
也可以变''' ''' 分段来写
print(
'''
name:%s,
age:%d
'''
%("张三",18)
)
输出结果为:
name:张三,
age:18
字符串格式化符号
-----------------------常用 占位符---------------------- # %c 格式化字符及其ASCII码
>>>print("百分号c用来替换:%c"%(65))
百分号c用来替换:A
# %s 格式化字符串
>>>print("百分号s用来替换:%s"%("字符串"))
百分号s用来替换:字符串
# %d 格式化整数
>>>print("百分号d用来替换:%d"%(100))
百分号d用来替换:100
# %f 格式化浮点数字,可指定小数点后的精度
>>>print("百分号f用来替换:%f"%(10.00))
百分号f用来替换:10.000000 #小数点后六个零
--------------------进制占位符------------------------
# %u 格式化无符号十进制整数
(%d与%u都是十进制整数,区分在于有符号还是无符号, 有符号能表示大小,也能表示正负,无符号只能表示大小。 因为Python全面采用有符号整型,所以%u已经过时了。)
# %o 格式化八进制数
>>>print("十进制的8可以转换为八进制的%o"%(8))
十进制的8可以转换为八进制的10
# %x 格式化十六进制数
>>>print("十进制的10可以转换为十六进制的%x"%(10))
十进制的10可以转换为十六进制的a
# %X 格式化十六进制数(大写)
>>>print("十进制的10可以转换为十六进制的%X"%(10))
十进制的10可以转换为十六进制的A
-------------------不常用占位符---------------------
# %e 用科学计数法格式化浮点数
>>>print("浮点数10000000用科学计数法表示为%e"%(10000000))
浮点数10000000用科学计数法表示为1.000000e+07
# %E 作用同%e,用科学计数法格式化浮点数
>>>print("浮点数10000000用科学计数法表示为%E"%( 10000000 ))
浮点数10000000用科学计数法表示为1.000000E+07
# %g %f和%e的简写
>>>print("浮点数10000000用科学计数法表示为%g"%( 10000000 ))
浮点数10000000用科学计数法表示为1e+07 #去掉小数点后的无效0
# %G %f 和 %E 的简写
>>>print("浮点数10000000用科学计数法表示为%G"%( 10000000 ))
浮点数10000000用科学计数法表示为1E+07
# %p 用十六进制数格式化变量的地址(指针)(被废除)
格式化操作符辅助指令
------------------常用辅助指令---------------------
m.n. m 是显示的最小总宽度,n 是小数点后的位数(如果可用的话)
>>>print("%10.3f"%(3.33333))
3.333 #3.333前有五个空格
- 用做左对齐
>>>print("%-10.3f"%(3.33333))
3.333 #左对齐数字前无空格
+ 在正数前面显示加号( + )
>>> print("%+10.2f"%(45))
+45.00
0 右对齐时,在前面填充0而不是空格
>>> print("%010.2f"%(45))
0000045.00
---------------------不常用辅助指令---------------------
# 在八进制数前面显示('0o')
在十六进制前面显示'0x'或者'0X'(取决于用的是'x'还是'X')
>>>print("%#o"%(10))
0o12
>>>print("%#x"%(10))
0xa
>>>print("%#X"%(10))
0XA
% 当字符串中存在格式化标志时,需要用 %%表示一个百分号
>>>print("20%%%d"%(100))
20%100
下面再来说说格式化字符串的函数str.format(),它增强了字符串格式化的功能。
字符串模板.format(逗号分隔的参数)
如果模板字符串有多个槽{},且槽内没有指定序号,则按照槽出现的顺序分别对应.format()方法中不同的参数。
>>> print("{}曰:学而时习之,不亦{}".format("孔子","说乎"))
孔子曰:学而时习之,不亦说乎
下面指定了槽的顺序,则按顺序对应。
>>>print("{1}曰:学而时习之,不亦{0}".format("孔子","说乎"))
说乎曰:学而时习之,不亦孔子
槽除了参数序号,还可以包括格式控制信息。模板:{参数序号:格式控制标记}
实例
# 添加填充、对齐、宽度
s="Python"
>>>print("{0:+^10}".format(s))
++Python++
等同于
>>>x="Python"
>>>y="+"
>>>z=10
>>>print("{0:{1}^{2}}".format(x,y,z))
++Python++
#添加千位分隔符
>>>print("{:,}".format(123456789))
123,456,789
#添加精度
>>> print("{:.3f}".format(123.456789))
123.457
>>> print("{:.5}".format("Python"))
Pytho
rjust()
Python rjust() 返回一个原字符串右对齐,并使用空格填充至长度 width 的新字符串。如果指定的长度小于字符串的长度则返回原字符串。
模板:str.rjust(width[, fillchar])
>>>print("123".rjust(6))
123 #结果123前有三个空格
五、字符串的内置函数
x="hello python"
---------------------常用函数---------------------------
(1)# count(str,beg=0,end=len(string))
返回 str 在 string 里面出现的次数,如果 beg 或者 end 指定则返回指定范围内 str 出现的次数
>>>print(x.count("o",0,5))
#x字符串中从索引0到5的位置有一个o
(2)#center(width, fillchar)
返回一个指定的宽度 width 居中的字符串,fillchar 为填充的字符,默认为空格。
>>>print(c.center(20,"#"))
####hello python####
(3)#find(str, beg=0, end=len(string))
检测 str 是否包含在字符串中,如果指定范围 beg 和 end ,则检查是否包含在指定范围内,如果包含返回其索引值,否则返回-1
>>>print(x.find("l",0,15))
2
(4) #islower()
检测字符串是否全小写,小写返回 True,否则返回 False
>>>print(x.islower())
True
(5)# isupper()
检测字符串是否全大写,大写返回 True,否则返回 False
>>>print(x.isupper())
False
(6) # lower()
字符串中大写转换为小写
>>>print("ABC".lower())
abc
(7) # upper()
字符串中小写转换为大写
>>>print("abc".upper())
ABC
(8) #strip()
去除字符串前后的特殊字符
>>>print("\nMY TITLE\n".strip())
MY TITLE
(9) # replace(old, new[, max])
把字符串中的 old(旧字符串) 替换成 new(新字符串),如果指定第三个参数max,则替换不超过 max 次。
>>>print("my title title".replace("tle","ABC",1))
my tiABC title
(10) #split()
以指定字符为分割符,将字符串分割成列表,1代表只在第一个字符处分割
>>>print("My title title".split("i",1))
['My t', 'tle title']
----------------------------不常用函数-------------------------
(11)# capitalize()
首字母大写
>>>print("hello python".capitalize())
Hello python
(12) # startswith()
判断是否以某个内容开头
>>>print("hello".startswith("hel"))
True
(13)#endswith()
判断是否以某个内容结尾
>>>print("Python".endswith("on"))
True
(14) # expandtabs(tabsize=8)
在\t 处以tab键分隔,字符串 string 中的 tab 符号转为空格,tab 符号默认的空格数是 8 。
>>>print("hello\tpython ".expandtabs(tabsize=20))
hello python
(15) # index()
查找到第一个元素,并将索引值返回 找不到报错
>>>print("hello".index("o"))
4
(16) #isalnum()
只能是字符或者数字,或者两者的结合,不可以有特殊字符
>>>print("ABC".isalnum())
True
(17) # isdecimal()
判断是否为十进制
>>>print('123456'.isdecimal())
True
(18) # isnumeric()
检测字符串是否只由数字组成
>>>print('123456'.isnumeric())
True
(19) # isidentifier()
检测是否合法变量 True为合法 False为非法
>>>print("abc".isidentifier())
True
(20) # isspace()
检测字符串是否全是空格
>>>print(" ".isspace())
True
(21) # istitle()
检测字符串中每个单词是否开头大写
>>>print("My title".istitle())
False
(22)#swapacase()
字符串中大小写转换
>>>print("MY title".swapcase())
my TITLE
(23) #ljust()
生成一个以指定字符串开头的指定长度的字符串,缺少部分用‘*’在后补充
>>>print("My tltle".ljust(50,"*"))
My tltle******************************************
(24) # rjust()
生成一个以指定字符串开头的指定长度的字符串,缺少部分用‘*’在前补充
>>>print("My title".rjust(50,"*"))
******************************************My title
(25)# lstrip()
去除字符串前的特殊字符
>>>print("\nhello\n".lstrip())
hello
# 字符串后的特殊字符并没有去除, 这里是后面的换行符产生的空行
(26) # rstrip()
去除字符串后的特殊字符
>>>print("\nhello\n".rstrip())
# 字符串前的特殊字符并没有去除, 这里是后面的换行符产生的空行
hello
(27) # rfind()
查找到最后一个元素,并将索引值返回 找不到返回-1
>>>print("My title title".rfind("t"))
11
(28) # title()
以首单词格式修改后面单词的格式
>>>print("My title title".title())
My Title Title # 按照首单词中首字母为大写,所以后边title的首字母也为大写