第6章1-字符串及正则表达式 p63

2023-12-25 23:15

本文主要是介绍第6章1-字符串及正则表达式 p63,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

字符串的常用方法 p63 p64

字符串是不可变数据类型

方法名描述说明
str.lower()将str字符串全部转成小写字母并产生一个新的字符串,str字符串保持不变
str.upper()将str字符串全部转成大写字母并产生一个新的字符串,str字符串保持不变
str.split(sep=None)将str按照指定的分隔符sep进行分隔,产生一个新列表类型,原字符串不变
str.count()sub这个字符串在str中出现的次数
str.find(sub)查询sub这个字符串在str中是否存在,若不存在返回-1,若存在返回sub首次出现的索引
str.index(sub)功能与find相同,区别在于要查询的子串sub不存在时,程序报错
str.startwith(s)查询字符串str是否以子串s开头
str.endwith(s)查询字符串str是否以子串s结尾
str.replace(old,news)使用news字符串替换字符串s中所有old字符串,结果是一个新的字符串
str.center(width,fillchar)字符串str在指定的宽度范围内居中,可以使用fillchar进行填充
str.join(iter)在iter中的每个元素后面都增加一个新的字符串str
str.strip(chars)从字符串中去掉左侧和右侧chars中列出的字符串
str.lstrip(chars)从字符串中去掉左侧chars中列出的字符串
str.rstrip(chars)从字符串中去掉右侧chars中列出的字符串

代码实例:

# 大小写相互转换
s1='HelloWorld'
s2=s1.lower()
print(s1)
print(s2)s3=s1.upper()
print(s3)# 字符串的分隔
e_mail='123@qq.com'
lst=e_mail.split('@')
print(e_mail)
print(lst[0],lst[1])# 统计子串'o'出现的次数
print(s1.count('o'))
print(s1.count('m')) # 不存在的字符返回0# 字符串的检索操作
print(s1.find('o')) # 若存在,找到首次出现的索引
print(s1.find('m')) # 若不存在,返回-1print(s1.index('o'))
#print(s1.index('m')) # 'm'不存在于s1中# 判断前缀和后缀
print('demo.py'.endswith('.py'))
print('text.txt'.endswith('.txt'))print(s1.startswith('H'))
print(s1.startswith('P'))s='HelloWorld'
# 字符串的替换
s1=s.replace('o','你好') # 第三个参数是替换几次,若未指定则是替换所有
print(s)
print(s1)
s2=s.replace('o','你好',1)
print(s2)# 字符串在指定的宽度范围内居中
print(s.center(20))
print(s.center(20,'*'))# 去掉字符串左右的空格
s='    Hello    World    '
print(s)
print(s.strip(' ')) # 左右两侧的空格都被去掉了
print(s.lstrip(' ')) # 只取掉左侧的空格
print(s.rstrip(' ')) # 只取掉右侧的空格# 去掉指定的字符
s='dl-HelloWorld'
print(s.strip('ld')) # 与顺序无关,任何一种顺序都可以
print(s.lstrip('ld'))s='dlr-HelloWorld'
print(s.strip('rld'))s='rdl-HelloWorld'
print(s.strip('rld'))

格式化字符串的三种方式 p65

1、占位符

%s:字符串格式
%d:十进制整数格式
%f:浮点数格式
%.1f:小数位数为1的浮点数格式

2、f-string

使用 f'字符串'{} 标明被替换的字符

3、str.format()方法

模板字符串.format(逗号分隔的参数)

代码实例

# 1、使用占位符进行格式化
name='马冬梅'
age=18
score=98.5
print('姓名;%s,年龄:%d,成绩:%f' % (name,age,score))
print('姓名;%s,年龄:%d,成绩:%.1f' % (name,age,score)) # 通过使用%.1f控制小数点位数# 2、f-string python3.6之后可以用
print(f'姓名:{name},年龄:{age},成绩:{score}')# 3、使用字符串的format方法
print('姓名:{0},年龄:{1},成绩:{2}'.format(name,age,score))
print('姓名:{2},年龄:{0},成绩:{1}'.format(age,score,name))

format详细格式控制 p66

格式化字符串的详细格式

:填充对齐方式宽度.精度类型
引导符号用于填充单个字符<左对齐,>右对齐,^居中对齐字符串的输出宽度数字的千位分隔符浮点数小数部分的精度或字符串的最大输出长度整数类型:b\d\o\x\X,浮点数类型:e\E\f\%

代码实例:

s='HelloWorld'
print('{0:*<20}'.format(s))
print('{0:*>20}'.format(s))
print('{0:*^20}'.format(s))print(s.center(20,'*'))# 千位分隔符(只适用于整数和浮点数)
print('{0:,}'.format(123456789))
print('{0:,}'.format(123456789.123456))# 浮点数小数部分的精度
print('{0:.2f}'.format(3.1415926))# 字符串类型表示最大的显示长度
print('{0:.5}'.format('helloworld')) # hello# 整数类型
a=425
print('二进制:{0:b},十进制:{0:d},八进制:{0:o},十六进制:{0:d}'.format(425))# 浮点数类型
b=3.1415926
print('{0:.2f},{0:.2E},{0:.2e},{0:.2%}'.format(b))

字符串的编码和解码 p67

str:字符串类型
bytes:二进制类型

字符串的网络传输:
str -> bytes -> str

str -> bytes是字符串编码的过程
bytes -> str是字符串解码的过程

字符串的编码:
将str类型转换成bytes类型,需要使用到字符串encode()方法

str.endcode(encoding='utf-8',errors='strict/ignore/replace')

字符串的解码:
将bytes类型转换成str类型,需要使用到bytes类型的decode方法

bytes.decode(encoding='utf-8',errors='strict/ignore/replace')

strict,ignore,replace是执行出错的处理方案:
strict:执行出错就报错
ignore:执行出错忽略错误
replace:执行出错时将出错的地方使用?替代

默认是 strict

代码实例:

s='伟大的中国梦'# 编码:str->bytes
s_code=s.encode(errors='replace') # encoding默认是utf-8,因为utf-8中文占3个字节
print(s_code)s_code_gbk=s.encode(encoding='GBK',errors='replace') # gbk编码中一个中文占两个字节
print(s_code_gbk)# 编码中的出错问题
s2='耶♬'s2_code=s2.encode(encoding='GBK',errors='ignore')
print(s2_code)# 出错处理变成严格后,这里会报错
#s2_encode=s2.encode('gbk',errors='strict')s2_encode=s2.encode('gbk',errors='replace')
print(s2_encode)# 解码:bytes->str
print(s_code_gbk.decode('gbk'))
print(s2_encode.decode('gbk'))

数据的验证 p68

指程序对用户输入的数据进行合法性验证

方法名描述说明
str.isdigit()所有字符都是数字(阿拉伯数字)只能是十进制的阿拉伯数字
str.isnumeric()所有字符都是数字,可以是阿拉伯数字,罗马数字,中文一二三四这些
str.isalpha()所有字符都是字母(包含中文字符)
str.isalnum()所有字符都是数字或者字母
str.islower()所有字符都是小写
str.isupper()所有字符都是大写
str.istitle()所有字符都是首字母大写
str.isspace()所有字符都是空白字符

代码实例:

# isdigit() 只识别十进制的阿拉伯数字
print('123'.isdigit())
print('一二三'.isdigit())
print('0b101'.isdigit()) # F
print('Ⅰ'.isdigit()) # F# 是数字就行,罗马数字,阿拉伯数字,中文数字,人民币数字
print('123'.isnumeric())
print('一二三'.isnumeric())
print('0b101'.isnumeric()) # F
print('Ⅰ'.isnumeric()) # T
print('壹'.isnumeric()) # Tprint('-'*100)# 所有字符都是字母(包含中文字符)
print('hello大家'.isalpha())
print('hello大家123'.isalpha()) # F
print('hello大家一二三'.isalpha()) # T
print('hello大家ⅠⅠⅠ'.isalpha()) # F# 所有字符是数字或者字母
print('123'.isnumeric())
print('一二三'.isnumeric())
print('0b101'.isnumeric()) # F
print('Ⅰ'.isnumeric()) # T
print('壹'.isnumeric()) # T

这篇关于第6章1-字符串及正则表达式 p63的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/537309

相关文章

每日一题|牛客竞赛|四舍五入|字符串+贪心+模拟

每日一题|四舍五入 四舍五入 心有猛虎,细嗅蔷薇。你好朋友,这里是锅巴的C\C++学习笔记,常言道,不积跬步无以至千里,希望有朝一日我们积累的滴水可以击穿顽石。 四舍五入 题目: 牛牛发明了一种新的四舍五入应用于整数,对个位四舍五入,规则如下 12345->12350 12399->12400 输入描述: 输入一个整数n(0<=n<=109 ) 输出描述: 输出一个整数

C和指针:字符串

字符串、字符和字节 字符串基础 字符串就是一串零个或多个字符,并且以一个位模式为全0的NUL字节结尾。 字符串长度就是字符串中字符数。 size_t strlen( char const *string ); string为指针常量(const修饰string),指向的string是常量不能修改。size_t是无符号数,定义在stddef.h。 #include <stddef.h>

PHP字符串全排列

方法一: $str = 'abc';$a =str_split($str);perm($a, 0, count($a)-1);function perm(&$ar, $k, $m) {if($k == $m){ echo join('',$ar), PHP_EOL;}else {for($i=$k; $i<=$m; $i++) {swap($ar[$k], $ar[$i]);perm($ar

PHP7扩展开发之字符串处理

前言 这次,我们来看看字符串在PHP扩展里面如何处理。 示例代码如下: <?phpfunction str_concat($prefix, $string) {$len = strlen($prefix);$substr = substr($string, 0, $len);if ($substr != $prefix) {return $prefix." ".$string;} else

十一、C语言:字符串函数

目录 一、strlen 二、strcpy 三、strcat  四、strcmp 五、strstr 六、strtok 七、strerror 一、strlen 注意:strlen()函数的返回值是size_t,两个size_t相减仍为无符号数 int main(){char arr[10] = "abc";char brr[10] = "abc123";if (strl

JavaScript正则表达式六大利器:`test`、`exec`、`match`、`matchAll`、`search`与`replace`详解及对比

在JavaScript中,正则表达式(Regular Expression)是一种用于文本搜索、替换、匹配和验证的强大工具。本文将深入解析与正则表达式相关的几个主要执行方法:test、exec、match、matchAll、search和replace,并对它们进行对比,帮助开发者更好地理解这些方法的使用场景和差异。 正则表达式基础 在深入解析方法之前,先简要回顾一下正则表达式的基础知识。正则

NC 把数字翻译成字符串

系列文章目录 文章目录 系列文章目录前言 前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。 描述 有一种将字母编码成数字的方式:‘a’->1, ‘b->2’, … , ‘z->26’。 现在给一串数字,返回有多少种可能的译码结果 import java.u

C语言进阶【1】--字符函数和字符串函数【1】

本章概述 字符分类函数字符转换函数strlen的使用和模拟实现strcpy的使用和模拟实现strcat的使用和模拟实现strcmp的使用和模拟实现彩蛋时刻!!! 字符分类函数 字符: 这个概念,我们在以前的文章中讲过了。我们键盘输入的信息都是字符。字符大体可以分为两类——单个字符,字符串。而单个字符又可以进行分类——字母字符,数字字符,特殊字符和不可见字符。进行思维图展示: 在日

匹配电子邮件地址的正则表达式

这个正则表达式 QRegularExpression regex(R"((\w+)(\.|_)?(\w+)@(\w+)(\.(\w+))+))"); 用于匹配电子邮件地址的格式。下面是对这个正则表达式的逐步解析和解释: 1. QRegularExpression 构造函数 QRegularExpression regex(R"((\w+)(\.|_)?(\w*)@(\w+)(\.(\w+))+

nyoj 685 查找字符串

当初一开始没做出来。 后来,学习过一段时间之后,在返回来做这道题,忽然发现,map类容器可以做。 PS:需要注意的是:此题如果用c++的输入输出的话,会超时。 O(time):gets()<  scanf() < cin。   附上代码: #include<stdio.h>#include<map>#include<string>#include<string.h>usin