day 8 note 字 符 串

01. 字符串 和字符

1. 字符串(str)

容器:将’’、 “” 、’’’’’’、 “”""""作为容器的表示,里面的每个独立的文字信息就是它的 元素

(引号中的每个符号都是字符串的 元素)

元素:引号中的每个符号都是元素, 字符串的元素又叫字符
不可变(不支持增删改);有序的(支持下标操作)

s1 = 'a6,你好'
s2 = "数ks022123"print(type(s1), type(s2) )     # <class 'str'> <class 'str'> <class 'str'>
s4 = '''abc'''
s5 = """abc123"""
print(type(s4), type(s5))      # <class 'str'> <class 'str'>

2. 字 符

python中只有字符的概念,没有对应的数据类型。如果需要字符用长度是1的字符串来表示.

1)转义字符

字符串中的元素 / 符号 / 字符分为两种:有一种是普通字符, 另外一种是转义字符

a.普通字符 - 除了转义字符以外的字符都属于普通字符;普通字符在字符串中表示这个符号本身

b.转义字符 - 通过 \ (反斜杠) 加其他字符 的形式存在, 它在字符串中有特殊功能或者特殊意义

\n - 换行(相当于按一下回车)

\t - 水平制表符(相当于按一下tab键)

表示一个单引号

" 表示一个双引号

\ 表示一个反斜杠 ( \ )

\u 四位的16进制数 - 表示四位16进制数作为编码值对应的字符(编码字符)

s8 = '\tabc\n123'
print(s8)s9 = 'abc\'123'
print(s9)s10 = "abc'123"
print(s10)s11 = "abc\"123"
print(s11)s13 = 'abc\\n123'
print(s13)   # abc\n123 s14 = 'abc\u4eff123'
print(s14)   # abc仿123

3. 字符编码

(1)计算机能直接存储的数据只有数字,而且存的是数字的补码。

(2)文本数据没有办法直接存到计算中,计算在保存文本数据的时候,存的其实是每个文本符号对应的数字
(对计算机来讲,每个文本符号都会对应一个固定的数字),每一个文本符号对应的数字就是这个符号的编码值

**(3)**字符编码表:ASCII码表Unicode编码表
编码表中保存的就是每个符号和数字之间的 一一> 对应关系

ASCII码表: a.总共128个字符, 每个字符对应的编码范围:0~127 (只有美国人用的符号)
b. 数字在字母的前面;大写字母在小写字母前面;大写字母和小写字母没有紧挨着
**Unicode编码表:**a. Unicode编码表示ASCII码表的扩展
b. 中文编码范围:4e00 ~ 9fa5
c. python采用的Unicode编码表

4. 编码值的使用

1)编码字符: \u编码值

print('\u4e00 ~ \u9fa5')                #   一 ~ 龥
print('a\u0061')                       #    aa   61是a的16进制编码值
print('\u096f\u097f')                  #    ९ॿ
print('\u1100\u114f')                 #     ᄀᅏ

2)chr (编码值) - 获取指定编码值 对应的字符

print(chr(0x4e00))              # 一
print(chr(97))                  # a
print(chr(0x56ef))              # 囯for x in range(0x1800, 0x18AF+1):print(chr(x), end=' ')print(len(range(0x4e00, 0x9fa5+1)))

3)ord(字符) - 获取字符编码值


print(ord('陶'), ord('希'), ord('宇'))                # 38518 24076 23431 (十进制)print(hex(ord('陶')), hex(ord('希')), hex(ord('宇'))) # 0x9676 0x5e0c 0x5b87(十六进制)

02. 获取字符

1. 获取字符

字符串获取字符的语法和列表获取元素的语法一样

1) 获取单个字符

字符串[下标]

str1 = 'hello python!'
print(str1[1], str1[-1])   # e , !a. 一个空格是一个字符(符号也是字符)str2 = 'abc 123'
print(str2[4])          # 1str3 = 'abc  123'
print(str3[5])          # 1b.一个转义字符是一个字符(一个转义字符的长度是1)str4 = 'abc\n123'
print(str4[4])         # 1str5 = '\tabc123'
print(str5[1])        # astr6 = '    abc123'
print(str6[4])        # astr7 = '\u4e00abc'
print(str7[1])        # a

2) 切片

message = 'Really get to know yourself before you make any decision.'
print(message[-5:])          # 'sion.'
print(message[1:6:2])        # 'ely'
print(message[::-1])
print(message[:-5:-1])       # .noi

3)遍历

for x in 'ab\u4e00c':print(x)for index in range(len(message)):print('字符:', message[index])for index, item in enumerate(message):print(index, item)

03. 字符串相关操作

1.数学运算符: +, *

1)字符串1 + 字符串2 - 将两个字符串合并产生一个新的字符串

str1 = 'abc'
str2 = '123'
print(str1 + str2)   # 'abc123'name = '张三'
age = 18xxx今年xx岁!message = name+'今年'+str(age)+'岁!'
print(message)

2)字符串N / N字符串 - 字符串重复N次产生一个新的字符串

print('abc'*2)       # ('abc', 'abc')
print('hello world!\n' * 10)

2.比较运算符

1)==、 !=

print(‘abc’ == ‘abc’) # age
print(‘abc’ == ‘acb’) # False

2)>、<、>=、<=

字符串1 > 字符串2

两个字符串比较大小,比较的是第一对不相等的字符的大小。(两个字符比较大小比较的是字符的编码值的大小)

print('abc' > '123456')                  # True
print('Abc' > 'abc')                     # False
print('余婷' > 'hello world!')            # True

比较运算符的应用:判断字符的类型

是否是数字: 48 <= ord(字符) <= 57 / ‘0’ <= 字符 <= '9’
是否是大写字母: ‘A’ <= 字符 <= ‘Z’
是否是小写字母: ‘a’ <= 字符 <= ‘z’
是否是字母: ‘A’ <= 字符 <= ‘Z’ or ‘a’ <= 字符 <= 'z’

是否是中文: ‘\u4e00’ <= 字符 <= '\u9fa5’

练习1:分别统计字符串中中文字符的个数和字母的个数str3 = 'hsjj数据是2823竭尽所能SJJ==-2...数kkl'
count1 = 0
count2 = 0
for x in str3:if '\u4e00' <= x <= '\u9fa5':count1 += 1elif 'A' <= x <= 'Z' or 'a' <= x <= 'z':count2 += 1
print('中文:', count1, '字母:', count2)练习2:判断一个字符串中是否有数字字符,有打印True, 没有打印False'bans江苏省'  -> False   '三角函数sss223=='  -> Truestr4 = 'bans江苏省'
for x in str4:if '0' <= x <= '9':print(True)break
else:print(False)

3. in 和 not in

字符 in 字符串 - 判断字符串中是否存在指定的字符

字符串1 in 字符串2 - 判断字符串1是否是字符串2的子串

print('a' in 'abc')   # True
print('Z' in 'abc')   # Falseprint('abc' in 'a1b2c3')   # False
print('abc' in '123abc舒克舒克')  # True

04. 字符串的相关函数

1. max, min, sorted

print(max('jskm'))
print(sorted('jskm'))                # ['j', 'k', 'm', 's']lenprint(len('abc'))                     # 3
print(len('\tabc\n123'))              # 8

2. str(数据) - 将数据转换成字符串

所有类型数据都可以转换成字符串;数据转换成字符串的时候,是直接在数据打印值最外层加引号

100  -> '100'12.5 -> '12.5'[10, 20, 30] -> '[10, 20, 30]'['abc', 10, 20]  -> "['abc', 10, 20] "{'name': '张三', 'age': 18}  -> "{'name': '张三', 'age': 18}"list1 = ['abc', 10, 20]
list1_str = str(list1)list2 = list(list1_str)
print(list2)   # ['[', "'", 'a', 'b', 'c', "'", ',', ' ', '1', '0', ',', ' ', '2', '0', ']']

3. eval函数 – 将列表格式的字符串转换成列表或者将字典格式的字符串转换成字典…

str5 = "['abc', 10, 20] "
list2 = eval(str5)
print(list2, type(list2))  # ['abc', 10, 20] <class 'list'>
print(list2[0])dict1 = eval("{'name': '张三', 'age': 18}")
print(dict1, type(dict1))   # {'name': '张三', 'age': 18} <class 'dict'>tuple1 = eval('(10, 20, 30)')
print(tuple1, type(tuple1))   # (10, 20, 30) <class 'tuple'>result = eval('[10, "abc", 123]')
print(result, type(result))

05. 字符串相关方法

1.字符串1.count(字符串2) - 统计字符串2在字符串1中出现的次数

str1 = 'abmsidssasiissddd'
print(str1.count('a'))
print(str1.count('ss'))
print('how are you! and you?'.count('you'))   # 2

2.字符串1.index(字符串2) - 查找字符串2第一次出现在字符串1中的位置,以正的下标值返回

message = 'how are you! and you? and'
print(message.index('y'))      # 8
print(message.index('and'))    # 13print(message.index('anm'))    # ValueError: substring not found

3.字符串.join(序列) - 将序列中的元素通过字符串连接产生一个新的字符串

注意:序列中的元素必须是字符串

list1 = ['how', 'are', 'you']
print(str(list1))   # "['how', 'are', 'you']"result = ''.join(list1)
print(result)   # howareyouresult = ' '.join(list1)
print(result)   # how are youresult = '加上'.join(list1)
print(result)   # how加上are加上youresult = '+'.join('abc')
print(result)    # a+b+c练习:['abc', 120, True, 12.5]  -> 'abc+120+True+12.5'['abc', 120, True, 12.5]  -> ['abc', '120', 'True','12.5']list1 = ['abc', 120, True, 12.5]
print('+'.join([str(x) for x in list1]))   # abc+120+True+12.5new_list1 = []
for x in list1:new_list1.append(str(x))

4. 字符串1.split(字符串2) - 将字符串1中所有的字符串2作为切割点对字符串进行切割,返回切完后每一段对应的列表

字符串1.split(字符串2, N) - 将字符串1中前N个字符串2作为切割点

message = 'how are you!'
result = message.split(' ')
print(result)   # ['how', 'are', 'you!']print('000abc123abc456abc789'.split('abc'))   # ['000', '123', '456', '789']注意:切割点在字符串两端或者切割点连续出现都可能产生空串print('abc123abc456abc789'.split('abc'))    # ['', '123', '456', '789']
print('123abcabc345'.split('abc'))          # ['123', '', '345']list2 = ['', '123', '456', '', '789', '']
new_list2 = [x for x in list2 if x]
print(new_list2)

5. 字符串1.replace(字符串2, 字符串3) - 将字符串1中的字符串2都替换成字符串3

字符串1.replace(字符串2, 字符串3, N) - 将字符串1中前N个字符串2替换成字符串3

str2 = 'abc123andyou'
print(str2.replace('a', 'B'))      # Bbc123Bndyou
print(str2.replace('123', '321'))  # abc321andyou

day 8 note 字 符 串相关推荐

  1. 桐花万里python路-基础篇-05-字符串及浮点数

    字符串 常用内建方法 所有的方法都包含了对Unicode的支持,有一些甚至是专门用于Unicode的 方法 描述 str.capitalize() 把字符串的第一个字符大写 str.center(wi ...

  2. 【愚公系列】2021年12月 Python教学课程 04-字符串

    文章目录 一.字符串类型 str 1 字符串类型的定义 2 字符串的运算: 3 Python 转义字符: 4 "多行字符串" 5 字符串内置方法 6 格式化方法 7 字符串颜色控制 ...

  3. NYOJ-+-字符串(贪心)

    +-字符串 描述: Shiva得到了两个只有加号和减号的字符串,字串长度相同.Shiva一次可以把一个加号和它相邻的减号交换.他想知道最少需要多少次操作才能把第一个字符串变换成第二个字符串.你现在要去 ...

  4. 【STL】string详解(string类常用的操作函数、构造函数、赋值操作、子符串的拼接、查找和替换、比较、存取、插入和删除、获取)

    目录 1. string容器 简介 2. string类常用的操作函数 3. 构造函数 4. 赋值操作 5. 字符串拼接 6. 字符串查找和替换 7. 字符串比较 8. 字符串存取 9. 字符串插入和 ...

  5. python0b1010_笔记-python-字符串格式化-format()

    笔记-python-字符串格式化-format() 1.      简介 本文介绍了python 字符串格式化方法format()的常规使用方式. 2.      使用 2.1.    Accessi ...

  6. [Google Guava] 6-字符串处理:分割,连接,填充

    原文链接 译文链接 译者:沈义扬,校对:丁一 连接器[Joiner] 用分隔符把字符串序列连接起来也可能会遇上不必要的麻烦.如果字符串序列中含有null,那连接操作会更难.Fluent风格的Joine ...

  7. java中索引超出怎么办_Java-字符串索引超出范围异常“字符串索引超出范围”

    我是新来的java,并通过询问我确信什么是愚蠢的问题来咬牙切齿.我创建了一些方法,只是简单地打电话给他们.主要方法中的while循环出现错误.编译器说"线程主java.lang.String ...

  8. Redis:08---字符串对象

    一.字符串对象概述 字符串类型是Redis最基础的数据结构.首先键都是字符串类型,而且其他几种数据结构都是在字符串类型基础上构建的,所以字符串类型能为其他四种数据结构的学习奠定基础 字符串就是一个由字 ...

  9. Python-字符串

    Python-字符串 基本操作 分片 字符串修改 各种内置方法 casefold() count() find()及index() join()方法 replace()方法 split()方法 格式化 ...

最新文章

  1. 环境微生物期刊—Bioresource Technology
  2. hdu 2544(最短路径)
  3. nyoj A+B Problem IV
  4. LeetCode每日一题 24. 两两交换链表中的节点
  5. ajax 跨域请求api_【.NET Core 3.0】框架之十二 || 跨域 与 Proxy
  6. 细分shared_ptr智能指针在各个版本的使用情况
  7. inner join 和 exists 效率_19 个让 MySQL 效率提高 3 倍的 SQL 优化技巧
  8. 波士顿大学计算机专业世界排名,波士顿大学计算机工程专业大学排名业内最独到阐明...
  9. 聊聊flink的RestartStrategies
  10. centos7更改引导项等待时间
  11. JavaScript的7个位运算符
  12. python给用户打标签_用户画像—打用户行为标签
  13. 功分器和耦合器以及合路器的区别
  14. 中国开源走向第二梯队!
  15. 计算机没有显示远程桌面连接,连接远程桌面时出现:“这台计算机没有远程桌面客户端访问许可”,怎么处理?...
  16. PB proUSB门锁接口函数例程
  17. 【HDU】4942 Game on S♂play 线段树
  18. 数据分析:留存率曲线拟合
  19. 正则表达式(常用正则表达式)
  20. 网络常识,whirshark分析

热门文章

  1. 机载航空电子系统测试平台ETest的设计与实现
  2. Fiddler抓包视频并转图片,去重后制讲义【视频处理】
  3. 1.1 电路和电路模型
  4. 大数据专业考研书_考研大数据:这些专业太抢手 你的排第几?
  5. 通俗讲解LORA中的跳频和扩频 (转)
  6. IPv6在企业网络中的应用
  7. 使用kms软件激活windows 10企业版
  8. 03.尚硅谷网课3-字符实体与语义标签
  9. 程序员的数学 学习(指数爆炸)
  10. dailycheckin多用户签到分享于腾讯云函数