1.11 str 字符串
字符串属于不可变序列,是 文本序列。
字符串的声明
>>> #字符串的声明既可以用单引号也可以用双引号,这两个能方法在效果上是一样的 >>> s = '' >>> type(s) <class 'str'> >>> ss = "" >>> type(ss) <class 'str'> >>> >>> #单引号和双引号也可以混用,如果字符串中间需要一个单引号可以在两边加双引号 >>> w = "what's your name" >>> w "what's your name" >>> print(w) what's your name >>> #单双引号的混用要注意的地方,就是其配对规律。 >>> #如在字符串中间出现单引号,还可以用转义字符的方法实现 >>> w = 'what\'s your name' >>> w "what's your name" >>> >>> w = 'abc"def' >>> w 'abc"def' >>>
多行字符串的声明
>>> #用''' '''声明多行字符串 >>> s1 = '''dsgfdsds dsgwregvfsdf vergvdvs vadrgbvfd''' >>> s1 'dsgfdsds\ndsgwregvfsdf\nvergvdvs\nvadrgbvfd' >>> print(s1) dsgfdsds dsgwregvfsdf vergvdvs vadrgbvfd >>> #可见多行字符串是程序\n实现的,所以可以直接用字符串来实现多行字符串的效果 >>> s2 = 'nveiwdfsvnk\nvnewirovnsa\nvheirva\nvneriwb' >>> print(s2) nveiwdfsvnk vnewirovnsa vheirva vneriwb >>> >>> #此外,多行字符串的声明还可以用双引号 >>> s3 = """vnewfv vneorijv vnekrhvf viewrv """ >>> print(s3) vnewfv vneorijv vnekrhvf viewrv >>> #如果单双引号混用呢? >>> s4 = '''vneirnvsk nveowrsvf vewrov vnewo""" KeyboardInterrupt >>> #可见由于没有输入第二个''',会认为第一个'''后的所有内容都是多行字符串中的内容,会继续接受输入,等待第二个''' >>>
字符串中的转义字符
>>> #字符串中最常见的转义字符应该就是换行符了 >>> s = 'abcdefhg' >>> s 'abcdefhg' >>> s1 = 'abcd\nefhg' >>> s1 'abcd\nefhg' >>> print(s1) abcd efhg >>> \a 响铃 \b 退格 \n 换行 \t tab键 \' 或 \" 转义 ' " \? 转义一个? \0 表示一个空字符 \o 开头表示以八进制数声明字符 \x 开头表示以十六进制数声明字符 后边会经常遇到写文件路径的情况,文件路径中的\ 的处理有两种方法 第一种方法:用\ 转义 \ >>> path = "C:\\abc\\xyz\\tag.txt" >>> print(path) C:\abc\xyz\tag.txt 第二种方法:用r来声明字符串中的\不是转义符。r表示原始字符串。可以忽略转义符。 >>> path = r'C:\abc\xyz\tag.txt' >>> print(path) C:\abc\xyz\tag.txt
字符串是序列,支撑序列的通用操作
字符串虽然属于不可变序列,但由于字符串使用频率很高,且实际应用中会有很多需要修改字符串的应用场景,故Python内置了一些函数来改变字符串,下面逐一进行介绍
字符串常用操作一:将其他类型的数据转化为字符串的全局函数str(obj)
>>> '+5 Traceback (most recent call last): File "<pyshell#0>", line 1, in <module> '+5 TypeError: Can't convert 'int' object to str implicitly >>> int(') + 5 38 >>> ' + str(5) ' >>>
字符串常用操作二:改变字符串中的字符的函数replace(old,new[,count])
>>> s = 'www.baidu.com' >>> #把字符串中的第一个w修改为y >>> s1 = s.replace('w','y',1) >>> s1 'yww.baidu.com' >>> s 'www.baidu.com' >>> #由s1和s的对比发现,原字符串不变,替换后的字符串是又新生成的字符串 >>> >>> #如果我想把前两个w,替换成a >>> >>> s2 = s.replace('w','a',2) >>> s2 'aaw.baidu.com' >>> >>> #如果字符串中的w是不连续的,想一次性替换多个 >>> s = 'ababab' >>> #把s中的3个a替换成c >>> s.replace('a','c',3) 'cbcbcb' >>> #看来不连续的也可以一次性替换,如果第三个参数传递的值大于字符串中需要被替换的字符的总数,会如何 >>> s 'ababab' >>> s.replace('a','c',4) 'cbcbcb' >>> #那就是有多少就替换多少 >>> >>> #replace的第一个和第二个参数都是可以包含多个字符的字符串 >>> url = 'www.baidu.com' #想把这个字符串中的com替换成cn >>> url.replace('com','cn') 'www.baidu.cn' >>> >>> >>> >>> #其实还有另外一个思路来替换字符串中的字符或子字符串,那就是我们手动切割字符串并拼接,用什么切割呢?还记得切片吗? >>> #把www.baidu.com的第一个w替换成a >>> s = 'www.baidu.com' >>> s2 = 'a' + s[1:] >>> s2 'aww.baidu.com' >>>
字符串常用操作三:将应为字符串的第一个英文字母大写
>>> s = 'www.baidu.com' >>> s.capitalize() 'Www.baidu.com' >>> s1 = '(www.baidu.com)' >>> s1.capitalize() '(www.baidu.com)' >>> #看来这个函数只能把第一个字符是英文字母的字符串的第一个字符变成大写 >>> s2 = 'Www.baidu.com' >>> s2.capitalize() 'Www.baidu.com' >>> s3 = 'w()' >>> s3.capitalize() 'W()' >>>
字符串常用操作四:将字符串中所有的英文字母变成大写upper()
>>> s = 'www.baidu.com' >>> s.upper() 'WWW.BAIDU.COM'
字符常用操作五:将字符串中所有的英文字母变成小写lower()
>>> s = 'www.baidu.com' >>> s.upper() 'WWW.BAIDU.COM' >>> s.upper().lower() 'www.baidu.com' >>>
字符串常用操作六:判断字符串是否以某个特定的字符串开头 startswith('str')
>>> s = 'www.baidu.com' >>> s.startswith('w') True >>> s.startswith('ww') True >>> s.startswith('sw') False >>>
字符串常用操作七:判断字符串是否以某个特定的字符串结尾 endswith('str')
>>> s 'www.baidu.com' >>> s.endswith('com') True >>> s.endswith('cn') False >>>
字符串常用操作八:判断当前字符串的字符是否为数字 isnumeric()
>>> #如果一个字符串中不是数字而要转化为整型或浮点型会如何 >>> s = 'ss' >>> int(s) Traceback (most recent call last): File "<pyshell#12>", line 1, in <module> int(s) ValueError: invalid literal for int() with base 10: 'ss' >>> >>> #所以想把字符串转化成数字前,需要判断字符串中是否为数字 >>> s = ' >>> if s.isnumeric(): print(int(s) + 1) 4 >>> float(s) + 1 #可见整型可以转换为浮点型 4.0 >>> >>> s = '3.0' >>> int(s) #浮点型转化为整型会报错 Traceback (most recent call last): File "<pyshell#22>", line 1, in <module> int(s) ValueError: invalid literal for int() with base 10: '3.0' >>> float(s) 3.0 >>>
字符串常用操作九:判断当前字符串的字符是否为字母 isalpha()
>>> s = ' >>> s.isalpha() False >>> >>> s = 'a' >>> s.isalpha() True >>>
字符串常用操作十:将字符串按特定字符将其拆分成列表 split()
>>> #按照一定的字符拆分字符串是一个常用的操作,如拆分URL,获取一些内容 >>> s = 'www.baidu.com' >>> s.split() ['www.baidu.com'] >>> >>> s.split('.') ['www', 'baidu', 'com'] >>> #看来这个函数需要一个参数作为分隔的标记 >>> u = r'c\dvsdn\vefvdn\vreiov\vnde' >>> u.split('\\') ['c', 'dvsdn', 'vefvdn', 'vreiov', 'vnde'] >>> #可见拆分出的字符串放在一个列表中,然后根据需要从列表中取值处理 >>>
字符串常用操作十一:将列表中的元素按照特定的字符串连接成字符串 join()
>>> #join()可以理解成是split()的反向操作 >>> s = 'www.baidu.com' >>> s.split() ['www.baidu.com'] >>> s.split('.') ['www', 'baidu', 'com'] >>> >>> #我现在不想用'.'连接,,用'。’连接如何操作呢 >>> l=s.split('.') >>> '。'.join(l) 'www。baidu。com' >>> #可见这个连接符号是可以自定义的
字符串常用操作十二:格式化字符串 format()
参数的三种传递方法 # 1 位置参数1 >>> '身高:{} 米,体重:{} 千克'.format(h,w) '身高:1.8 米,体重:70 千克' >>> #该参数传递方法是按位置传递的,字符串中的{}的顺序和format()的参数的顺序一致 >>> #如果参数少的话没关系,但是参数较多的话,就比较难对应了 # 2 数字索引 >>> '姓名:{0},身高:{1},体重:{2},大家欢迎{0}同学'.format(n,h,w) '姓名:Mark,身高:1.8,体重:70,大家欢迎Mark同学' >>> #可见format()的某个参数在字符串中多次出现的话,用这种方法方便些 # 3 关键字参数 >>>#还可以用变量名的方法传递参数,这样更容易将字符串中和format()中的参数对应起来,可读性更好 >>> '姓名:{name} 身高:{height} 体重:{weight}'.format(name=n,height=h,weight=w) '姓名:Mark 身高:1.8 体重:70' #数字索引和关键字参数是可以混用的,需要注意的是某个位置使用了关键字参数,其后都要用关键字参数 # 4 通过对象属性 class Person: def __init__(self,name,age): self.name = name self.age = age def __str__(self): return 'This guy is {self.name},is {self.age} old'.format(self=self) str(Person('kzc',18)) 'This guy is kzc,is 18 old' # 5 使用索引 >>> l = ['hoho', 18] >>> 'name is {0[0]} age is {0[1]}'.format(l) 'name is hoho age is 18 #在format()参数中及字符串中的{}中添加一些格式限定符实现一些高级的操作 # 1 将参数设置为10个字符的长度,不足的前边补空格 >>> '{:10}'.format(123.1123) ' 123.1123' # 2 设置字符串的左对齐和右对齐和居中对齐 >>> '{:>10}的钱数{:<20}'.format('Mark',100000000000) ' Mark的钱数100000000000 ' #可以理解为<,>的尖的方向就是要对齐的方向 # ^、<、>分别是居中、左对齐、右对齐 # 3 设置浮点数精度 >>> '{},{},{}'.format(3.14159,3.14159,3.14159) '3.14159,3.14159,3.14159' >>> '{f},{.2f},{}'.format(3.14159,3.14159,3.14159) '3.141590,3.14,3.14159' #第一个f表示以浮点数显示,默认保存小数后6位,不足的补0 #第二个 .2f表示保留小数后2位,当然,保留几位可自定义,多余的部分四舍五入 #第三个 什么格式也不限制,就按默认的形式输出 >>> {06.2f}'.format(3.14159) '3.141590,3.14,003.14' #设置为6位长度,小数后是2位的浮点数,6前的0 表示前边不足的补0,否则就是补空格,因为是数字嘛,所以前面只能用0或空格来填充,不能用别的字符 #格式化处理整数值 >>> '{:X},{:o},{:b}'.format(230,230,230) 'E6,346,11100110'57 #默认是以十进制显示的 #X:十六进制 o:八进制 b:二进制 #用逗号来表示千分位 >>> '{:,}'.format(1234567890) '1,234,567,890' >>> #将浮点数以百分数形式显示 >>> '{:%}'.format(3/4) '75.000000%' >>> #可知默认的小数点后边有6位 >>> #可以用如下形式限制百分数后的小数点位数 >>> '{:.2%}'.format(3/4) '75.00%' >>> #大括号可以写两遍来转义 >>>format("Empty dict: {{}}") >>>"Empty dict: {}"
字符串常用操作十三:移除字符串头尾指定的字符(默认为空格)strip()
>>> s = ' abc' >>> s ' abc' >>> s.strip() 'abc' >>> >>> ss = 'aaabbbcccaaaa' >>> ss.strip('a') 'bbbccc' >>> #可见strip()函数会将字符串两侧所有与参数匹配到的部分去掉 >>> ss = 'aaabbbcccaaaa' >>> ss.strip('a') 'bbbccc' >>> sss = 'aaabbb' >>> sss.strip('aa') 'bbb' >>> ssss = 'abcabcab' >>> ssss.strip('abc') '' >>> sss.strip('ab') '' #可见如果strip()的参数多余一个字符时,strip()会将参数拆分,然后拿拆分后的 #部分与需要处理的字符串的两侧做匹配,
1.11 str 字符串的更多相关文章
- Python中str字符串的功能介绍
Str字符串的功能介绍 1. 字符串的操作 字符串的连接操作 符号: + 格式:str1 + str2 例如:str1 = 'I Love' str2 = 'You!' print(str1 + st ...
- Python数据类型的内置函数之str(字符串)
Python数据类型内置函数 - str(字符串) - list(列表) - tuple(元组) - dict(字典) - set(收集) str(字符串)的一些操作 - 字符串相连方法 # 字符串的 ...
- day1 str字符串常用方法
字符串是编程中常用的类型,字符型在内存中是以单个形式存储的,比如name = "alex",在内存中存储的形式为["a","l"," ...
- 牛客练习赛11 假的字符串 (Trie树+拓扑找环)
牛客练习赛11 假的字符串 (Trie树+拓扑找环) 链接:https://ac.nowcoder.com/acm/problem/15049 来源:牛客网 给定n个字符串,互不相等,你可以任意指定字 ...
- python之str 字符串
str,字符串,有序的,存储多个字符,不可修改,通过下标值访问快捷方式 1, 定义一个空字符串 2,定义一个非空字符串 3,索引,又名下标值 4,切片与延长 5,转义字符 6, python 属于面向 ...
- 列表 list 容器类型数据(str字符串, list列表, tuple元组, set集合, dict字典)--->元组 tuple-->字符串 str
# ### 列表 list 容器类型数据(str字符串, list列表, tuple元组, set集合, dict字典) # (1)定义一个列表 listvar = [] print(listvar, ...
- Atitit.ati str 字符串增强api
Atitit.ati str 字符串增强api 1. java StringUtils方法全览 分类: Java2011-11-30 17:22 8194人阅读 评论(2) 收藏 举报 javas ...
- Python基础类型(二) str 字符串
字符串str ' ' 字符串+ 都是字符串的时候才能相加 a = 'alex' b = 'wusir' print(a+b) #字符串拼接 字符串* 字符串和数字相乘 a = 6 b = 'alex' ...
- php array数组的相关处理函数and str字符串处理与正则表达式
下面给各位同学整理了一些关于php array数组的相关处理函数and str字符串处理与正则表达式,希望文章对你会有所帮助. 数组的相关处理函数: 1)数组的键值操作函数 array_value ...
随机推荐
- CSS深入理解学习笔记之line-height
1.line-height的定义 定义:两行文字基线之间的距离. 注:不同字体之间的基线是不同的. 2.line-height与行内框盒子模型 行内框盒子模型: ①内容区域(content area) ...
- 03_HTML Canvas第一天
视频来源:麦子学院 讲师:刘慧涛 w3cshool之HTML5画布:http://www.w3school.com.cn/html5/html_5_canvas.asphtml5 canvas参考手册 ...
- AngularJS执行流程详解(转)
一.启动阶段 大家应该都知道,当浏览器加载一个HTML页面时,它会将HMTL页面先解析成DOM树,然后逐个加载DOM树中的每一个元素节点.我们可以把AngularJS当做一个类似jQuery的js库, ...
- 编译和解释性语言和python运行方式
1.编译型语言和解释性语言 编译型语言:在执行之前需要一个专门的编译过程,把程序编译成为机器语言的文件,运行时不需要重新翻译,直接使用编译的结果就行了.程序执行效率高,依赖编译器,跨平台性差些.如C. ...
- Python之Django rest_Framework(2)
实例化: v1 = ["view.xxx.path.Role","view.xxx.path.Group",] 可以循环,循环出来的每一个不能实例化 如果把v1 ...
- python中的协程及实现
1.协程的概念: 协程是一种用户态的轻量级线程.协程拥有自己的寄存器上下文和栈. 协程调度切换时,将寄存器上下文和栈保存到其他地方,在切换回来的时候,恢复先前保存的寄存器上下文和栈. 因此,协程能保留 ...
- Android+TensorFlow+CNN+MNIST 手写数字识别实现
Android+TensorFlow+CNN+MNIST 手写数字识别实现 SkySeraph 2018 Email:skyseraph00#163.com 更多精彩请直接访问SkySeraph个人站 ...
- python之闭包与装饰器
python闭包与装饰器 闭包 在函数内部定义的函数包含对外部的作用域,而不是全局作用域名字的引用,这样的函数叫做闭包函数. 示例: #-------------------------------- ...
- javascript 中 dom.getAttribute("value") 与dom.value的差异
dom 是一个 input type="text" 手动修改 input 的值, 使用 dom.getAttribute("value") 只能得到 html ...
- Java多线程基础(二)
信号量Semaphore,类似于锁的功能,用于多线程中对一组资源的控制. acquire方法用于尝试获取一个资源,未获取前将一直等待.release用于释放一个资源,release的前提是已经获得了一 ...