Python学习打call第九天:字符串

今天开始学习字符串,字符串是 Python 中最常用的一种数据类型。还有字符串的一些操作也需要熟悉一下。

1.字符串的表示方式

a = 'hello'
a = "hello"
a = '''hello'''
a = """hello"""     #三个引号表示多行字符串,多字符串可以使用制表符和换行符

print(a)   #全部输出为:hello
  • Python中字符串有四种表达形式,分别是:' '," ",''' ''',""" """

  • 字符串是不可变的,一旦定义就不能改变

  • 且字符串是可迭代对象(就是可循环?);

  • Python3中,字符串是Unicode编码;

2.Unicode 字符串

  • 在Python2中,普通字符串是以8位ASCII码进行存储的,而Unicode字符串则存储为16位unicode字符串,这样能够表示更多的字符集。使用的语法是在字符串前面加上前缀 u;

  • 在Python3中,所有的字符串都是Unicode字符串。

3.Python转义字符

  • \:续行符;

  • \e:转义;

  • \n:换行;

  • \ \:反斜杠符号;

  • \ ":单引号;

  • \ ":双引号;

  • \000:空;

  • \v:纵向制表符;

  • \t:横向制表符;

  • \r:回车;

  • \f:换页;

  • \oyy:八进制数,yy代表的字符,例如:\o12代表换行;

  • xyy:十六进制数,yy代表的字符,例如:\x0a代表换行;

  • \other:其它的字符以普通格式输出;

4.python字符串格式化符号

  • %c:格式化字符及其ASCII码;

  • %s:格式化字符串;

  • %d:格式化整数;

  • %u:格式化无符号整型;

  • %o:格式化无符号八进制数;

  • %x:格式化无符号十六进制数;

  • %X:格式化无符号十六进制数(大写);

  • %f:格式化浮点数字,可指定小数点后的精度;

  • %e:用科学计数法格式化浮点数;

  • %E:作用同%e,用科学计数法格式化浮点数;

  • %g:%f和%e的简写;

  • %G:%f 和 %E 的简写;

  • %p:用十六进制数格式化变量的地址;

5.字符串的访问

  • Python中,字符串也能通过索引访问;
a = "helloWorld"
print(a[1])   #输出:1
  • 字符串还能通过 for 循环访问;
a = "helloWorld"
for item in a:
    print(item)  
#输出:
h
e
l
l
o
W
o
r
l
d

6.字符串的连接

  • 字符串之间直接相加;
a = 'hi'
b = ','
c = '你好'
print(a+b+c)     #输出:hi,你好
  • 使用 join方法进行拼接;
a = ['hi',',','你好']
b = ''.join(a)
print(b)     #输出:hi,你好

7.字符串的切割

  • split:使用 split 方法通过切割符从左向右进行切割,如果没有指定切割次数则全部切割,指定了切割次数则根 据指定的次数切割;
a = 'h,e,l,l,o'
b = a.split(',')
c = a.split(',', maxsplit=1)

print(b)    #输出['h', 'e', 'l', 'l', 'o']
print(c)    #输出['h', 'e,l,l,o']
  • rsplit:和 split 方法类似,但是 rsplit 方法是从右向左开始切割;
a = 'h,e,l,l,o'
b = a.rsplit(',')
c = a.rsplit(',', maxsplit=1)

print(b)    #输出['h', 'e', 'l', 'l', 'o']
print(c)    #输出['h,e,l,l', 'o']
  • splitlines:通过换行符 \n 进行切割,如果加上 True,那么换行符 \n 也会打印出来;
a = 'How do \nyou do ?'
b = a.splitlines()
c = a.splitlines(True)

print(b)   #输出:['How do ', 'you do ?']
print(c)   #输出:['How do \n', 'you do ?']

  • partition:从左到右切割三段,分隔符为中间那段,如果只想获取三段中的某一段,那么可以把其他的段改为下划线 _ ;
string = '1,2,3,4,5'
a, seq, b = string.partition(',')

print(a)    #输出:1
print(seq)  #输出:,
print(b)    #输出:2,3,4,5

8.字符串对象方法

string = 'abc ABC'
string.方法名()
  • upper:字符串转为大写;

  • lower:字符串转为小写;

  • swapcase:大小写交替,大写改小写,小写改大写;

  • title:字符串中所有单词首字母大写;

  • capitalize:整个字符串的首字母大写;

  • center:将字符串居中打印;

  • ljust:将字符串居左打印;

  • rjust:将字符串居右打印;

  • zfill:将字符串右对齐打印,左边默认为0填充;

9.字符串修改

  • replace:字符串替换,第一个参数 old 指需要被替换的字符串,第二个参数 new 为替换字符串, 第三个参数 count 为指定的次数;
string = 'abc'
print(string.replace('a', 'A'))    #输出:Abc
  • strip:剔除两端的字符,参数 chars 为指定需要剔除的字符,chars 不指定则为剔除掉空白字符(空格);
string = 'abc'
print(string.strip('a'))   输出:bc
  • rstrip:剔除右边的字符;

  • lstrip:剔除左边的字符;

10.字符串查找

str = 'abcdefg'

print(str.find('c'))   #输出:2
print(str.find('z'))   #输出:-1

print(str.index('b'))  #输出:1
print(str.index('z'))  报错:ValueError

print(str.count('c'))  #输出:1
print(str.count('z'))  #输出:0
  • find: 从左向右开始查找,参数sub为指定要查找的字符串,[start,end] 为查找开始和结束的索引,如果存在返回指定字符串的索引,不存在则返回-1;

  • index:如果存在返回需要查找的字符串的索引,不存在报错:ValueError;

  • count:返回字符出现的次数,不存在则输出0;

11.字符串判断

  • 字符串判断方法有很多,都是用 string.方法 的格式来使用,返回的类型也都是 bool 型,正确则返回 True,错 误返回False;
#startswith(prefix[, start[, end]]) 是否以prefix开头
#endswith(suffix[, start[, end]]) 是否以suffix结尾
#isalnum() 是否是字母或数字
#isalpha() 是否是字母
#isdecimal() 是否是十进制
#isdigit() 是否是数字
#isidentifier() 是否是字母和下划线开头
#islower() 是否是小写
#isupper() 是否是大写
#isspace() 是否是全空白字符

12.字符串格式化

C语言风格

print("how are %04d" % (100,)) # 输出:how are 0100
print('how are %s' % 'you')    # 输出:how are you
print('%.3f' % (1.361578))  # 输出:1.362
print("how are %-5d" % (20,))  # 输出:how are 20 
print("how are %5d" % (20,))   # 输出:how are    20
  • %d:整数占位符,例如%04d的意思是这个整数一共有四个占位符,不足的地方从左开始补0,就是右对齐,- 表示左对齐;

  • %s:字符串占位符;

  • %f: 浮点型;

Python format风格

print('{}, {}'.format('hello', 'world'))        #输出:hello, world
print('{0}, {1}'.format('hello', 'world'))      #输出:hello, world
print('{a},{b}'.format(a='hello', b='world'))   #输出:hello, world
  • 占位:使用{}符号占位,可以根据{}里面的索引值来填充字符串,也可以根据关键字的形式填充;

  • 对齐:< 表示左对齐、> 表示右对齐、0< 表示左对齐,其他地方补0、0> 表示右对齐,其他地方补0、^ 表示居中对齐、0^ 表示居中对齐,其他地方补0;

  • 进制:二进制、八进制、十进制、十六进制;

本文参考自侠课岛(9xkd.com)Python同学计划

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

推荐阅读更多精彩内容