经过大半年时间断断续续的学习python,到现在也能写出来一些小工具。但是在昨天看一个大神的代码我突然间认识到,基础不牢地动山摇,所以重头学习一遍python基础。 注:一下所有操作均在python3环境下
什么是python字符串:
字符串(String),是由数字、字母、下划线组成的一串字符;
python字符串特性:
1、属于python基本数据类型和结构的一种;
2、本身是不可变的数据类型;
3、有很多内置的方法;
重点先说,python字符串的拼接:
我个人感觉容易让新手困扰的就是string的拼接,不知道什么时候应该使用字符串的拼接,在不该用字符串拼接的地方使用了字符串拼接造成了极大的内存消耗;
如下:
现在又一个有元素的list,和一个空的字符串s,现在我想读取list_a中的元素写入字符串s中,可以使用for循环+写入,最后s='abcde',但是有一个问题就是,每次向s中添加一个字符都是重新开辟了一个内存空间地址赋值给s
现在只有5个元素如果有100个、100W个就非常非常的消耗内存了。所以业界有一个万恶的‘+’这个说法
list_a=['a','b','c','d','e']s=''for i in list_a: s = s + iprint(s)
那我们应该用什么方法来进行字符串的拼接呢?join 使用指定分割符号拼接字符集如不指定就不分割。
list_a=['a','b','c','d','e']s=''s = '-'.join(list_a)print(s)out:a-b-c-d-e
python字符串的内置函数:
name = "python"print(name.capitalize()) #首字母大写print(name.count('a')) #统计字符出现的次数print(name.center(50,"-")) #一共打印50个字符,将字符放在中间。print(name.endswith("on")) #判断一个字符串是否以指定字符串结尾bool值print(name.expandtabs()) #将tab 键转换为空格print(name.find("m")) #查找从左往右指定元素在字符串中的下标位置print(name.rfind("l")) #查找从右往左第一个字符的下标,下标计算方式是按照从左往右name = "my name {name} and {year}"print(name.format(name='',year='')) #format格式化字符串print(name.format_map({'name':'python','year':12})) #format_map 可以传字典print(','.join(['1','2','3'])) #将列表变成字符串用''中的分割号分割print(name.ljust(50,'*')) #右边填充指定符号print(name.rjust(50,'*')) #左边填充指定符号print(name.lower()) #将字符串中的大写变成小写print(name.upper()) #将字符串中的小写变成大写print(name.lstrip()) #将字符串左边的空格回车去掉print(name.rstrip()) #将字符串右边的空格回车去掉print(name.strip()) #将字符串中的回车空格去掉p = str.maketrans("abcdef","123456")print("python".translate(p)) #先将字符串中的字母与数字对应起来,然后在对比下面的python maketrans 相当于一个加密字典,通过它翻译其它字符串print(name.replace('M',"fuck"))print(name.replace('M',"fuck",1)) #替换字符串为其它字符 1代表替换第一个print(name.split()) #将字符串按照指定分割成列表,默认使用空格也可以使用其它分割print(name.splitlines()) #将字符串按照换行符分割成列表print(name.swapcase()) #将字符串中的大小写转换,大写变成小写,小写变成大写print(name.title()) #将字符串首字母大写#########判断都会加is###########print(name.isalnum()) #判断字符串中是否只有数字和字母返回bool值,空格也不可以print(name.isalpha()) #判断字符是否只有字母,返回bool值。print(name.isdecimal()) #判断字符是否为10进制数字返回bool值print(name.isdigit()) #判断字符是否为整数返回bool值print(name.isidentifier()) #判断是否为正确的变量名print(name.islower()) #判断字符串是否全部为小写,返回bool值print(name.isnumeric()) #判断字符是否为数字,返回bool值,小数也不行只有数字print(name.isspace()) #判断是否为空格 返回boolprint(name.istitle()) #判断首字母是否大写 返回boolprint(name.isupper()) #判断字符串是否都为大写 返回bool
来源:https://www.cnblogs.com/lishuodzt/p/12016937.html