python 起步- str 字符串小总结
来源:互联网 发布:网络分流器怎么连接图 编辑:程序博客网 时间:2024/06/16 22:31
博客只是一种笔记,尝试将自己所学的转化自己的语言,所以难免会有错误,如果发现有不对的地方或者,我不懂的地方要是有大佬能告诉我,真的万分感谢。以前总梦想这也会那也会,做一个全栈工程师,失败,懒惰,才明白,梦想哪有那么容易,知道的越多,不知道的才更多,人生嘛,做事要有一个蓝图、框架,别太看得起自己,就是那么平凡!
str 字符串类型:
无论任何语言,字符串都是避不开的焦点,其实相对的,也是很成熟的一部分。python 中只有字符串,不支持字符,觉得这是我喜欢python重要的原因之一:简约。字节型的字符串这次不说,真的还不 是很明白,先跳过吧。
a. + 运算 >>> "rain" + "sun"
'rainsun'
直接将两个字符串加在一起,这里,以及以后要注意,python 是完全面向对象,所有的类型都是对象,所以几乎所有的类型都是引用
>>> astr = "rain">>> type(astr)<class 'str'>#引用>>> id(astr)45477376>>> bstr = astr>>> id(bstr)45477376
astr 和 bstr 都是指向一个地址,甚至在python 中会有预存表这类的操作,只要出现还没清除的值,都可以再次被引用,这个看过点python的基本都会知道的,等我知道了原理,在来翻写,
但我知道的事, 给函数传递参数的时候,最需要注意下,你抛出的参数会不会在函数体内改变??因为你可能将来调用别人的函数,要保证自己变量的安全,后话啦。 总结一下,+ 操作之后的生成字符串是新的字符串,以及str 内的方法,生成的都是新的字符串,和原来的地址上没关系,用C语言的话是 malloc一个新的地址
>>> id("rain")45477376
b. * 乘法操作:
相当于连续相加
>>> 'a'*3'aaa
字符串的引用方式:
- 单引号引用 ’ …’
- 双引号引用 “…”
- 三引号引用 “”” … “””
单双没什么区别,但只有三引号允许编程的时候输入多行字符,这样说有点别扭,看例子吧,更清晰:
>>> astr = "rain">>> bstr = 'sun'#只有"""允许这样定义字符串>>> cstr = """rainsundoubleleft"""#如果 " 内的字符一行放不下,你又不想换行,可以这样:>>> cstr = "fadsf\fas">>> cstr'fadsffas'# \ 换行接着写, 在哪都能用>>> 12 + \ 2335#你还想在 "" 内换行,可以使用换行符 \n
有没有想过 当你在一个字符串中想输入 \ 的时候怎么办?
r 反转义
>>> str = r"\a">>> print (str)\a
python 的序列切片不说, 以后再说,一定意义上,切片也是方法,还是看方法,方法真多,看的我头都炸了,我大致个人的分了一下类,不过耐心第一步吧,还有应用呢
大小写转换
- capitalize():返回一个只有开头字母大写的字符串
>>> "rainsun".capitalize ()'Rainsun'
- casefold() : 转化为小写,侵略性的小写转化,即所有编码类型的字符串都转化为对应的小写(标准字符串的编码表对应)
>>> "ß".casefold()'ss'
- title():将字符串转化为title(每个单词的首字母大写)
>>> "rain sun".title()'Rain Sun'>>>
- upper():将字符串中的字母转化为大写字母,只转化unicode内的字符
>>> "faf23&&".upper()'FAF23&&'
- lower():转化为小写字母, 也是只转化unicode内的字符字母:
>>> 'FAF23&&'.lower()'faf23&&'
- swapcase():字符串中大写转小写,小写转大写:
>>> "ABCDefgh".swapcase()'abcdEFGH'
填充
- center(width, char):以str 为中心,char字符(注意这里是字符)为填充,左右扩充到宽度width的长度,char 默认为空格
>>> "code".center(10, "-")'---code---'
- zfill(width):将字符串填充到width宽度,填充材料为0, 可以跳过前缀 + 、-:
>>> "1.23".zfill(5)'01.23'>>> "-1.12".zfill(10)'-000001.12'
- ljust(width, char):字符串向右填充,宽度为width, 填充字符默认空格:
>>> "abcd".ljust(10)'abcd '
- join(iterable):将str 插入每个 iterable 的元素缝隙中,并返回构造出来的字符串,不过iterable中必须是字符串:
>>> "00".join("abcdefg")'a00b00c00d00e00f00g'>>> f = ["rain", "sun"]>>> "00".join(f)'rain00sun'
字符串查找
- count(sub, a, b):计算 str 中的sub 的出现个数,a、b为查找区间可以不设置,或者只设置一个,不设置默认为全字符串;只设置一个,默认从 a 开始查找,到字符串结束,[a, b)
>>> "abcdafg".count('a')2>>> "abcdafg".count('a',3 )1>>> "abcdafg".count('a',2, 4)0
startswith(sub, start, end):检查字符串开头,见下,endswith()
endswith(sub, start, end):将检查字符串是以sub结尾,start为比较的开始地方,end为比较的结束地方,[start, end)
>>> "rainsun".endswith("sun")True>>> "012345".endswith("45",4 )True>>> "012345".endswith("34", 3,5)True
- find(sub, start, end):在str中查找字符串sub ,如果找到,返回第一个匹配的字符串的首位置, 可以设置查找范围为 [start,end) 或者 [start,结束],这里还是说一下,start , end 其实就是设置切片的范围,看到例子中那个-1,你就明白了。还是一样没参数默认全部字符串。如果没有匹配返回-1
>>> "012012012".find("12", 0 , -1)1 #第一个匹配的首地址是s[1]
- index(sub, start, end):start ,end就在重复,index 和find 几乎一样,但都是返回位置下标,但是不同点,如果没有匹配,直接报错
>>> "012345".index("6")Traceback (most recent call last): File "<pyshell#43>", line 1, in <module> "012345".index("6")ValueError: substring not found>>> "012345".find("6")-1
字符串替代
- replace(old, new, count):使用 new字符串 代替str字符串中 old字符串,count 表示代替次数,默认全部代替
>>> "abcdabcd".replace("a", "哇")'哇bcd哇bcd'>>> "abcdabcd".replace("a", "哇", 1)'哇bcdabcd'
- expandtabs(tabszie=8):扩展\t转义字符串,tab 的大小默认为8,也可以自己传参数进去
>>> strs = """123\t431234\t4312345\t43""".expandtabs()>>> print (strs)123 431234 4312345 43>>>
字符串切割
- strip(chars):删除字符串开始或者结束的chars字符串中的字符,默认为空格,注意是开始和结束,不是中间的:
>>> "01010101430101012421401010101".strip('01')'4301010124214'
- split(sub=None, maxsplit=-1):切割字符串,以sub为界限,返回切割后的列表(不包含sub),maxsplit 最大切割数目,默认-1,完全切割,sub默认空格:
>>> "rain ab sun ab double ab left".split(" ab ")['rain', 'sun', 'double', 'left']>>> "rain ab sun ab double ab left".split(" ab ", 2)['rain', 'sun', 'double ab left']>>> "rain ab sun ab double ab left".split()['rain', 'ab', 'sun', 'ab', 'double', 'ab', 'left']
- partition(sep):返回以sep为分界线切割字符串而形成的三元元组,sep 匹配到第一个开始切割:
>>> "abcdefcdef".partition("cd")('ab', 'cd', 'efcdef')
- splitline(keepends):以换行符为基准切割字符串,主要用在兼容不同系统吧,具体不是很了解,有点像 split(‘\n’)
>>> "rain\nsun\nbun\nrain".splitlines()['rain', 'sun', 'bun', 'rain']
编码设置
- encord(encording=”utf-8”, error=”“):自从3.0的编码类型默认为utf-8,这种设置新手就很少用,所以暂不总结
格式化输出
- format(*parm1, **parm2):str 的标准输出,具体标准要看文档:
用法就像C#中的输出
>>> "{0}, {1}".format("rain", "sun")'rain, sun'
- format_map(mapping):这个我理解了大半天,才明白说什么,英语不好,一个单词一个单词的翻译你也不一定知道文档说什么,它和maketrans 联用相当于密码表,可以转换str 中的字符:
>>> map1 = "01234">>> map2 = "abcde">>> dict = str.maketrans(map2,map1)>>> "you are a bad boy".translate(dict)'you 0r4 0 103 1oy'>>> dict{48: 97, 49: 98, 50: 99, 51: 100, 52: 101}
你也完全可以自己做一个mapping,然后放进去 maketrans() 就是做一个映射字典。maketrans 是一个静态函数,不过python中不是没有正经的静态函数吗?有待学习
字符串判断 is族
isdecimal()
isnumeric()
isdigit() :以上三个都是判断数字字符的,区别有点大,主要是针对阿拉伯数字,中文数字,罗马数字,等等不同数字
isupper()
islower()
istitle() :判断大小写
isidentifier():判断标识符
isspace():判断空格
isalpha():判断字母
isalnum() :判断字母数字
isprintable():判断是否可打印
r 、 l 左右族
rfind(sub[, start[, end]])
rindex(sub[, start[, end]])
rjust(width[, fillchar])
rpartition(sep)
rsplit(sep=None, maxsplit=-1)
rstrip([chars])
lstrip([chars])
没有什么可以说的, r表示从右边开始, l表示从坐边开始
和原来的方法功能都一样
end…
字符串还有格式化输出,补一句, like this:
>>> str = "rain is %s">>> str'rain is %s'>>> print (str)rain is %s>>> print (str %("bad boy"))rain is bad boy
万能膏药,几乎在哪都能这样用,怎么重载的我就不知道了
- python 起步- str 字符串小总结
- Python 起步-list的小总结
- python 字符串操作 str
- Python学习笔记<字符串Str>
- Python:str字符串常用操作
- python: str.format (字符串 格式化)
- Python字符串(Str)详解
- python字符串内建函数str.index()和str.rindex()
- python 常用小总结(主要字符串)
- python学习笔记--字符串str相关
- python之字符串生成str(),repr()及' '
- python中字符串str的strip()方法
- python中的字符串格式函数str.format()
- python 字符串str需要注意的问题
- python中的字符串格式函数str.format()
- python 字符串str各种内置方法
- python中字符串str的strip()方法
- python3字符串编码总结-str(unicode)_bytes
- Coursera—machine learning(Andrew Ng)第三周编程作业
- 大数据算法课程笔记5a: fixed-parameter vertex cover
- 160个CrackMe—第一个:“You have to kill me”
- JavaEE学习之网络编程Socket
- 一、软件测试的基本概念
- python 起步- str 字符串小总结
- 欢迎使用CSDN-markdown编辑器
- shell的实现原理
- PAT A1025
- Linux存储设备的管理与分区
- 关于Android DrawerLayout的侧滑菜单的点击事件
- [JZOJ5457]项链
- java多线程
- Task 14