基本法则:
- 单引号和双引号对于字符串都是一样的效果,但是不能单、双引号混用;
- 三引号(’’’或”””)能够把一个多行的字符串格式原封不动地保留;
- 有且仅有字符串才使用引号(单引号或双引号),具体数字是不使用任何引号,即使用引号就表明它是字符串;
判断某个变量是否是字符串类型:
m = '123'
print(isinstance(m,str)) # 判断变量m是否是字符串这种数据类型;
特性:不可修改,常量
功能:移除空白、分割、长度、索引、切片、美化操作
str = "kyle shawe"
print(str.capitalize()) # 首字母大写capitalize(大写化,资本化)
str.casefold() # 大写全部变小写(case案例;fold折叠)
print(str.count('e')) # 统计字符的个数
print(str.center(50, "-")) # 表示这行一共需要的打印50个字符,如果不够的用“-”填充;并把str放在中央;
# 输出 --------------------kyle shawe--------------------
print(str.ljust(50,"*")) # 这行共要的打印50个字符,把str放在左边,右边用“*”填充;
print(str.rjust(50,"*")) # 表示这行一共需要的打印50个字符;把str放在右边,左边用“*”填充;
print(str.endswith("we")) # 判断是否是以“we”结尾;返回true、false
print(str.find('y')) # 查找A,找到返回其索引, 找不到返回-1
print(str[str.find("le"):]) # 切片
s = "hello,{k}"
print(s.format(k="kyle")) # 对参数进行赋值
str.index('a') # 返回a所在字符串的索引
判断字符串类型
共性:都含is,is表判断
'9aA'.isalnum() # True
'9'.isdigit() # 是否整数
name.isidentifier() # 是否一个合法的标识符
name.isnumeric # 是否只是由数字组成,不能有其他字符,如小数点;
name.isspace # 是否是个空格
"My Name Is".istitle # 是否是标题(每个单词首字母大写)
"AA".isupper # 是否大写
"aa".islower # 是否小写
字符串切片(取值)
str12 = "to day is a good day"
print(str12[5:10]) # 从给定下标开始截取到给定下标之前,顾头不顾尾
print(str12[:4]) # 从头截取到给定下标之前
print(str12[14:]) # 从给定下标处开始截取到结尾
print(str12[:]) # :号前后都省略,则表示全取列表所有的值;但这样写比较怪,不如直接print(str12)
print(str12[::2]) # 第一个:号前后都省略,表示全取,第二个:号后的数字2表示步长(和循环里的步长一致)
print(str12[::-1]) # 列表反转,类似os.reverse()
字符串方法
abc = "Hello,nice to meet you"
print(len(abc)) # 打印字符串的长度
print(abc.__len__()) # 打印字符串的长度
print(abc.lower()) # 转换字符串中大写字母为小写字母
print(abc.upper()) # 转换字符串中小写字母为大写字母
print(abc.swapcase()) # 转换字符串中大写字母为小写字母,小写字母为大写字母
print(abc.capitalize()) # 整个字符串中首字母大写,其他全部小写
print(abc.title()) # 每个单词的首字母大写
print(abc.center(50, "*")) # 一共50个字符,字符串放中间,不够的两边补*
print(abc.ljust(50, "*")) # 一共50个字符,字符串放左边,不够的左边补*
print(abc.rjust(50, "*")) # 一共50个字符,字符串放右边,不够的右边补*
print(abc.zfill(50)) # 一共50个字符,字符串放右边,不够的右边补0
print(abc.count("t")) # 统计字符串里t出现了多少次
print(abc.find("to")) # 找出to在字符串中的第几位
print(abc.rfind("to")) # 找出最后一个to在字符串中的第几位
print(abc.index("to")) # 和find一样的查找,只不过如果to不存在的时候会报一个异常
print(abc.rindex("to")) # 和rfind一样的查找,只不过如果to不存在的时候会报一个异常
print(" haha\n".split()) # 删除字符串左边和右边的空格或换行
print(" haha\n".lstrip()) # 删除字符串左边的空格或换行
print(" haha\n".rstrip()) # 删除字符串右边的空格或换行
print(abc.endswith("you")) # 判断字符串是否以you结尾
print(abc.startswith("Hello")) # 判断字符串是否以hello开始
print(abc.isalnum()) # 判断字符串中是否只有字母或数字
print(abc.isalpha()) # 判断字符串是否都是字母
print(abc.isdecimal()) # 判断字符串中是否只包含十进制字符
print(abc.isdigit()) # 判断字符串中是否只有数字
print(abc.islower()) # 判断字符串中的字符是否都是小写的英文字母
print(abc.isnumeric()) # 判断字符串中是否只有数字
print(abc.isspace()) # 判断字符串中是否只包含空格
详见:Python数据类型
字符串与列表、集合、元组互相转化
str = 'I_Love_Python.'
for i in str:
print(i,end='') # 以空来表示每次执行完print后的操作,也就是去除自动换行;
print('\n字符串是:',str) # 自带换行
list_str = list(str) # 把字符串转换为列表;
print('转换为列表是:',list_str) # 输出:['I', '_', 'L', 'o', 'v', 'e', '_', 'P', 'y', 't', 'h', 'o', 'n', '.']
set_str = set(str)
print('转换为集合是:',set_str)
tuple_str = tuple(str)
print('转换为元组是:',tuple_str)
列表转字符串
mylist = ['a','b','c']
str = ''.join(mylist) # 原理:在一个空串上不断加入一个列表中的元素
print(str) # 输出:abc
元组转字符串
mytuple = ('a','b','c')
str = ''.join(mytuple) # 原理:在一个空串上不断加入一个列表中的元素
print(str) # 输出:abc
串运算符
- +:字符串连接。
- *:重复输出字符串。
- []:通过索引获取字符串中字符
- [ : ]:截取字符串中的一部分
- in:成员运算符 - 如果字符串中包含给定的字符返回 True
- not in:成员运算符 - 如果字符串中不包含给定的字符返回 True
- r/R:原始字符串 - 原始字符串:所有的字符串都是直接按照字面的意思来使用,没有转义特殊或不能打印的字符。 原始字符串除在字符串的第一个引号前加上字母"r"(可以大小写)以外,与普通字符串有着几乎完全相同的语法。
//示例代码
a = 'hello'
b = 'world'
print(a+b) #helloworld,+号连接字符串
print(a*2) #hellohello,*号重复字符串
print(a[1]) #e,[]索引字符
print(a[1:4]) #ell,[:]截取字符串
print("h" in a) #True,in是否包含
print("M" not in a) #True,not in是否不包含
print(r'\n') #\n,r原始字符串(不解析转义字符)
'''output:
helloworld
hellohello
e
ell
True
True
\n
'''