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 ...
随机推荐
- linux 中 ping的回传值
今天在学习鸟哥私房菜的过程中,不明白ping的回传值是怎么设置的,后来网上找的结果了,特此记录一下 1 题目大意是指,ping一个网段的机器,如果可以通,就显示UP,如果不通就显示Down,其中一 ...
- Linux指令--性能监控和优化命令相关指令
原文出处:http://www.cnblogs.com/peida/archive/2012/12/05/2803591.html.感谢作者无私分享 性能监控和优化命令相关指令有:top,free,v ...
- Ipython的安装/ipython notebook的简单使用
安装了pyhton的windows版的shell好久了,今天才听说Ipython这个东西,确实在windows下的python shell很难用,一旦输入错误就要重新来过 了解了下ipython,然后 ...
- MySQL刷新事务日志级别设置
标签(linux): mysql 笔者Q:972581034 交流群:605799367.有任何疑问可与笔者或加群交流 # if set to 1 , InnoDB will flush (fsync ...
- 八大排序算法Java实现
本文对常见的排序算法进行了总结. 常见排序算法如下: 直接插入排序 希尔排序 简单选择排序 堆排序 冒泡排序 快速排序 归并排序 基数排序 它们都属于内部排序,也就是只考虑数据量较小仅需要使用内存的排 ...
- editplus 常用正则
EditPlus的查找,替换,文件中查找支持以下的正则表达式: Expression Description\t Tab character.\n New line.. Matches any cha ...
- python 字典操作方法详解
字典是一种通过名字或者关键字引用的得数据结构,key 类型需要时被哈希,其键可以是数字.字符串.元组,这种结构类型也称之为映射.字典类型是Python中唯一內建的映射类型. 注意,浮点数比较很不精确, ...
- ServiceStack.OrmLite T4模板使用记录
前言 最近研究了下ServiceStack.OrmLite,文档中也提到了使用T4模板对数据库中已经有了表进行实体的映射,这里也顺便记录下使用的步骤和情况. 开始使用 引用T4模板 首先我们创建一个工 ...
- 将常用的Android adb shell 命令行封装为C#静态函数
更多原创测试技术文章同步更新到微信公众号 :三国测,敬请扫码关注个人的微信号,感谢! 简介:adb命令是常用的Android命令行,自动化.代码调试.手工排查问题都会用的到,这里将常用的一些命令行封装 ...
- 2017年总结的前端文章——CSS盒模型详解
CSS的盒模型是CSS的基础,同时也是难点,这个问题经常在面试中会被问到,属于经典问题了.很多博客里讲得也很模糊不清,于是,我在这里重新整理一下. 可以认为每个html标签都是一个方块,然后这个方块又 ...