Python-字符串

目录: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的首字母也为大写

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,271评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,275评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,151评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,550评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,553评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,559评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,924评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,580评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,826评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,578评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,661评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,363评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,940评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,926评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,156评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,872评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,391评论 2 342

推荐阅读更多精彩内容