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 ...
随机推荐
- apache访问日志分析[转]
当前WEB服务器中联接次数最多的ip地址 #netstat -ntu |awk '{print $5}' |sort | uniq -c| sort -nr 查看日志中访问次数最多的前10个IP #c ...
- [转]如何使用PHP实现javascript的escape和unescape函数
前端开发工程师都知道javascript有编码函数escape()和对应的解码函数unescape(),而php中只有个urlencode和urldecode,这个编码和解码函数对encodeURI和 ...
- Linux常用命令(二)--文件目录命令
1. 列表目录命令: 格式: ls [参数] 用于显示文件或目录信息 选项: -l 每行显示一个文件和目录信息(长格式),简写:ll等同于ls -l 注意:当参数是文件时,显示此文件全部信息 当参数是 ...
- try{}catch(e){}不能捕获到异常
只能捕获到ReferenceError异常,I don't know why. try{ aa();//这是一个未被定义的方法 }catch(e){ if(e instanceof Reference ...
- awk运用
awk编程: 1. 变量: 在awk中变量无须定义即可使用,变量在赋值时即已经完成了定义.变量的类型可以是数字.字符串.根据使用的不同,未初始化变量的值为0或空白字符串" ",这主 ...
- 二目运算符 “->”
-> 在C语言中称为间接引用运算符,是二目运算符,优先级同成员运算符“.”.用法:p->a,其中p是指向一个结构体的指针,a是这个结构体类型的一个成员.表达式p->a引用了指针p指向 ...
- 序列化日期(yyyy-MM-dd hh:mm:ss)
var getDateFormat = function() { var _date = new Date(); //实例化一个Date对象 var _complete = function(valu ...
- get、post、put、delete请求方式
对资源的增,删,改,查操作,其实都可以通过GET/POST完成,不需要用到PUT和DELETE. Jersey框架,实现了restful风格,常用的注解@GET.@POST.@PUT.@DELETE如 ...
- NOIP 2017 Day 0. 游记
刚从曲师大试机回来... 不巧,我抽到了和去年一样的考场,还是那么难用的XP,还是那么难用的键盘. 似乎在考场上有一股奇怪的力量,我本来在自己电脑上打板子打的没那么快,但是试机的那段时间..说出来你们 ...
- HDU 5996 dingyeye loves stone [阶梯Nim]
dingyeye喜欢和你玩石子游戏. dingyeye有一棵nn个节点的有根树,节点编号为00到n−1n−1,根为00号节点.游戏开始时,第ii个节点上有a[i]a[i]个石子.两位玩家轮流操作,每次 ...