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)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

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