python_笔记_day6_字符串

day6大纲

一 字符串(str)


1 .什么是字符串(str)


字符串是python内置的一种容器型数据类型(序列),不可变,有序:
将单引号或者双引号作为容器,里面可以根据情况放多个字符
不可变:指的是内容的值和顺序不可变
有序:一旦字符串确定字符串中字符的位置就固定了(每个字符是第几个字符是确定的)

'ahs219'
"128*(数"
'hello'

2.字符串中的内容 - 字符


python 中只有字符的概念,没有字符对应的数据类型
字符串的基本单元就是字符,又叫字符串的元素

a,基本字符

#数字,字母,常用符号,中文,日语,韩语等
'a'
"ぁぃしてゐ"

b,转义字符

通过转义符号\后面跟不同的符号来表示特殊功能或特殊意义的字符

\n - 换行
'-一个单引号
" - 一个双引号
\ -一个反斜杠
\t 制表符一个缩进
加一个\ 可以实现多行

# str1 = 'abc' \
#        'abc'
# print(str1)
# str1 = 's\'bc\\n123n00'
  • 阻止转义:

在字符串的最前面加R/r,可以阻止字符串中的转义字符转义(一般用于正则表达式)

# str2 = r'\tabc\n123x\'y\"z'

c.编码字符 - \u

\u 后面跟4位的16进制数,来表示一个字符.
这个4位的16进制数对应的值是字符的编码

# 0-9,A-F
str3 = 'abc+\u4dc0'
print(str3)

3.字符编码


  • python 中的字符采用的是Unicode编码
  • 计算机存数据的时候只能存数字,而且存的是数字的补码(是以二进制的格式进行存储的)
print('100 2进制', bin(100))
print('100 8进制', oct(100))
print('100 16进制', hex(100))
print(0b1100100 * 10)

编码:

每个字符在计算机存储的时候都会对应一个固定且唯一的数字,这个数字就是这个字符的编码

每一个字符和数字的一一对应关系就是编码表,

常见的编码表有:ASCII码表和Unicode编码表.
ascii 码表只对数字字符,字母字符,英文符号进行编码
Unicode 码表是对ascii码表的扩充,能够对世界上所有的符号进行编码

Unicode 中4e00到9fa5是中文

3.1chr(),ord():

  • chr(编码值) :编码转字符
  • ord(字符):字符转编码
  • 注意 :字符就是长度为1的字符串
print(chr(0x4dc0))  # 编码转字符
print(chr(97))
print(ord('余'), ord('婷'))

二 字符串操作


1 获取字符 -取字符串的内容


1.1获取单个字符:

a.语法:字符串[下标] - 根据下标获取字符串中对应的字符

b.说明:

#字符串 - 可以是字符串,也可以是字符串变量,结果是字符串的表达式等都可以
#[] -  固定写法
#下标  -   又叫索引,一旦字符串确定,那么字符串中的每个字符都会对应一个下 表  示这个字符在字符串中的位置.
#         下标的范围是0开始到字符串长度减1 0表示第一个字符,1表示第二个,以此类推(通用的)
#          下标的 范围还可以是-1 - 字符串长度减1,-1表示倒数第一个
# str1 = 'python' # 'p' : 0/-6  'y' : 1/-5
# result = 'python'[3]
# print(result)
# print(str1[0],str1[-6],str1[-1],str1[4])
# print(str1[100])#IndexError: string index out of range

单个字符的下标不能越界

1.2获取部分字符(字符串切片)

a.语法: 字符串[开始下标:结束下标:步长]

从开始下标开始,获取到结束下标前为止,每次下标值增加步长

b.说明:

字符串    -   可以是字符串值,也可以是字符串变量,结果是字符串的表达式等都可以
#             []     -      固定写法
#             开始下标,结束下标 - 下表值开始下标对应的字符可以取到,结束下标对应的字符一定取不到
#             步长    -   整数,可以正的也可以是负的

c.注意: 下标可以越界

  • 如果步长为正(从前往后获取),开始下标对应的字符要在结束下标对应的字符前才能获取到值
  • 如果步长为负(从后往前获取),开始下标对应的字符要在结束下标对应的字符的后面才能获取到值
str2 = 'abcdefg123456'
print(str2[0:4:1])
# print(str2[0:4:-1]) #下标错误取到的是空串
print(str2[4:0:-1])
print(str2[-2:-3:-1])
print(str2[0:1000:1]) #下标可以越界.'abcdefg123456'
print('hello python'[1:-2:3]) #'eoy'

1.3切片的语法中可以对步长,开始下标和结束进行省略


1.3.1省略步长

字符串[开始下标:结束下标] ==字符串[开始下标:结束下标:1]

str2 = 'abcdefg123456'
print(str2[2:5]) #cde
print(str2[-4:-1]) #345

1.3.2省略开始下标

字符串[:结束下标:步长]- 如果步长是正,从字符串开头往后取:如果步长为负,从字符串最后一个字符往前取
字符串[开始下标::步长]- 如果步长是正,取到最后一个字符为止:如果步长为负,取到第一个字符为止

str2 = 'abcdefg123456'
print(str2[:3:1])  #abc
print(str2[:3:-1]) #654321gfe

print(str2[2:])     #cdefg123456
print(str2[2::-1])  #cba
print(str2[::-1])   #倒叙

#1234 - 4321
num = 1234
num = int (str(num)[::-1])
print(num)

1.4 遍历字符串 - 一个一个的取出所有的字符

1.4.1方法1:变直遍历

# for 变量 in 字符串:
#     循环体
# for char in 'hello':
#     print(char)

1.4.2方法2:通过遍历下标,来遍历字符串

str3 = 'when i was young'
for  index in range(len(str3)):
    print(index,str3[index])

index = 0
while index < len(str3):
    print(index, str3[index])
    index += 1

2 字符串相关运算

a 语法:

  • 字符串正整数 / 正整数字符串 -指定的字符串重复次数,产生一个新的字符串
print('abc'* 3)  #abcabcabc
print('*'* 10)  #**********

b 比较运算:

  • 字符串支持所有的比较运算符
  • 字符串1 == 字符串2, 字符串1 != 字符串2 -判断两个字符串是否相等

print('abc' == 'abc')
print('abc' == 'acb')
print('abc' != 'abc')
  • 两个字符串比较大小:让两个字符串中相同位置的字符一一比较(从前往后),找到第一对不相等的字符,判断编码值得大小
print('abcdef' > 'abz') # False
print('abc1' > 'abc') # True

c 应用

  • 判断一个字符是否是字母: 'a' <=char <='z' or 'A' <=char <= 'Z'
  • 判断一个字符是否是数字: '0' <= char <='9'
  • 判断一个字符是否是中文: 0x4e00 <=ord(char)<=0x9fa5
#char = 'Z'
#判断一个字符是否是字母: 'a' <=char <='z' or 'A' <=char <= 'Z'
#判断一个字符是否是数字: '0' <= char <='9'
#判断一个字符是否是中文:
    # '\u4e00'<=char<='\u9fa5'  
    # 0x4e00 <=ord(char)<=0x9fa5
    #  print('一'<=char<='龥')
print('\u4e00'<=char<='\u9fa5')
print(chr(0x4e00),chr(0x9fa5))
  • 练习: 输入一个任意的字符串,统计输入的内容中字母的个数.例如:输入'abc123你好好结束end~~~~' 结果是:6
# str1 = input('请随便输入一段带字母的内容:')
# count = 0
# for char in str1:
#     if 'a' <= char <= 'z' or 'A' <= char <= 'Z':
#         count += 1
# print('字母的个数是:',count)

3. in 和 not in 操作

  • 字符串1 in 字符串 2 - 判断字符串1 是否在字符串2中(判断字符串2中是否包含字符串1)
  • 字符串1 not in 字符串2 - 判断字符串 是否不在字符串2中(判断字符串2中是否不包含字符串1)
# print('abc' in '123abc===') #True
# print('abc' in 'a123bc===') #False
# print('abc' not in 'a123bc===') #True
# print('@' in '12@3abc===') #True

4.常用内置函数len()

  • len(字符串) -求字符串长度
  • (数据) -将其他数据转换字符,所有数据都能转换成字符串,转换的时候直接在数据的外面加引号
print(int('+23'))# 字符串转整型,只有去掉引号后,本身就是一个整数的字符才能转换成整型
print(float('124.a'))#只有去掉引号后,本身就是一个数字的字符串才能转换成浮点型
print(bool('')) #除了空串会转换成False,其他的都会转换为True

5.字符串的对象方法 :字符串.方法


5.1字符串.capitalize() 将字符串中的首字母大写

str4 = 'hello'
new_str = str4.capitalize()
print(new_str)

5.2字符串center(width,fillchar) 居中

产生一个长度为width的新字符串,新字符串中原字符串居中,剩余部分用fillchar填充

new_str=str4.center(11,'1')
print(new_str)
new_str=str4.center(11,'*')
print(new_str)

5.3字符串.ljust(width,fillchar) 左对齐

new_str=str4.ljust(11,'=')
print(new_str)

5.4字符串.rjust(width,fillchar) 左对齐

new_str=str4.rjust(3,'0')
print(new_str)
num = 1

5.5字符串.zfill(width) 数字自动补齐

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

推荐阅读更多精彩内容

  • 一 字符编码 1.什么是字符串 特点:序列,有序,不可变的。形式:用单引号或者双引号括起来的任意字符集。...
    Fly_withbird阅读 418评论 0 0
  • 字符串 1.什么是字符串 序列:有序,不可变的。用单引号或者双引号括起来的任意字符(集)。 2.字符串中的字符 a...
    落幕丶丶阅读 805评论 0 0
  • 昨天的复习 1.运算符:数学运算符,比较运算符,逻辑运算符,赋值运算符数学运算符:+,-,,/,//,,%比较运算...
    遥远的她197阅读 220评论 0 0
  • 字符串 1.什么是字符串(str) 字符串是Python内置的一种容器型数据类型(序列),不可变,有序; 将单引号...
    灬小鱼儿zzZ阅读 91评论 0 0
  • 有一个朋友,88年的北方女生,能力强,没有男朋友,有宗教信仰。2017年底做出了个重大决定,去塞浦路斯工作。临出国...
    罗蕾_938f阅读 545评论 2 1