0
点赞
收藏
分享

微信扫一扫

python(三)字符串

芥子书屋 2022-03-12 阅读 81

字符串

1.字符串的定义

-单引号定义:'123'
-双引号定义:"456987"

什么时候使用双引号,什么时候使用单引号?

一般是使用双引号

如果字符串内容包含双引号这时就需要使用单引号了
解决字符串中含引号的问题:

       "123456'7'"

可以使用索引访问字符串中的元素 e.g : a = ‘123456’ ,a[0] == ‘1’. 如何用for 循环遍历一个字符串?
符串内容不可更改

for i in range(len(a)):
	print(a[i],end='') # end = '符号' 表示输出以该字符结尾,默认是换行

2.转义字符

三个引号建立的字符串会自动完成转义 a = ‘’‘i’m a good person’’’

\\ 输出反斜杠
\"输出双引号

在字符串前加 r r"字符串" ,去掉字符串的特殊性 ,在需要输出原始数据的时候可用

e,g:
'aaaa\nbbbb'
print('aaaa\nbbbb')
得到的是 
`aaaa
`bbbb
print(r'aaaa\nbbbb')
得到的是
aaaa\nbbbb

3.格式化输出

简单的格式化输出

name = 'xx'
print('大家好,我叫%s'%name)
age = 18
print("大家好,我叫%s, 今年%d岁了!"%(name,age))
符号含义
%c字符
%s通过str()字符串转换来格式化 *
%i有符号十进制整数
%d有符号十进制整数 *
%o八进制整数
%x十六进制整数(小写字母)
%X十六进制整数(大写字母)
%e索引符号(小写"e")
%E索引符号(大写"E")
%f浮点实数 *
%g%f和%e的简写
%G%f和%E的简写

4.输入

字符串可以拼接使用    s = '123' + '456';
得到:s = '123456';

py3 中 input() 输入的是字符串
py2 相对智能

5.字符串的切片

切的范围:
[参数1(开始索引):参数2(结束索引): 参数3(步长)] ,切的范围是[参数1~参数2)每次选空为格参数3的数
因为字符串是不可变类型所以不需要考虑深拷贝和浅拷贝的关系

e.g: [:] 得到一个复制
a = "123456"
b = a[:] # 此时b和a 的内容相同
e.g: [1:] 从索引到字符串最后
b = a[1:]# b = "23456"

参数可以是负数:负的表示从后往前遍历

所以:e.g:  [-1::-1] 得到的是逆序, [::-1] 也可

例子:
num_str = “0123456789”,下面涉及的数值均为索引值,既可以直接带入
任务:
1.截取从 2 ~ 5 位置的字符串(索引为2到索引为5)

num_str[2:6] # '2345'

2.截取从 2 ~ 末尾 的字符串

num_str[2:] # '23456789'

3.截取从 开始~5位置的字符串

num_str[:6] # '012345'

4.截取完整的字符串

num_str[:] #  "0123456789"

5.从0开始,每隔一个字符截取字符串

num_str[::2] # '02468'

6.从索引 1 开始,每隔一个取一个

num_str[1::2] #  '13579'

7.截取从 2 ~ 末尾 - 1 的字符串

num_str[2:-1] #  '2345678'

8.截取字符串末尾两个字符

num_str[-2:] # '89'

9.字符串的逆序(面试题)

num_str[::-1] #  '9876543210'

6.字符串函数

(1)格式化函数
format方法
位置参数
关键字参数

“I{a} love {b}".format(a = "I" , b = "you" )//关键字
"{0} love {1}".format("I","you")//位置

二者可以混合使用
混用时位置参数在前关键字参数在后

'{0:.1f}{1}'.format(27.658,'GB')

打印出来的结果是

27.7GB

(2)大小写转换

string.capitalize() // 把字符串的第一个字符大写 *
string.title() // 把字符串的每个单词首字母大写*
string.lower()//转换string中所有大写字符为小写*
string.upper() // 转换 string 中的小写字母为大写*
string.swapcase() // 翻转string中的大小写*
// 都是返回一个新的字符串

(3)文本对齐

string.ljust(width)  返回一个原字符串左对齐,并使用空格填充至长度width 的新字符串 ,该函数实际上有三个参数
string.rjust(width) 返回一个原字符串右对齐,并且使用空格填充至长度width的新字符串
string.center(width) 返回一个元字符串居中,并使用空格填充至长度width的新字符串
'''
  清平调
   李白
云想衣裳花想容 春风拂槛露华浓
若非群玉山头见 会向瑶台月下逢
'''
s = ["清平调" , "李白" , "云想衣裳花想容" ,  "春风拂槛露华浓", "若非群玉山头见","会向瑶台月下逢"]

for i in s:
    print(i.center(45))

(4)去除空白字符

string.lstrip()//截掉 string 左边(开始)的空白字符
string.rstrip()//截掉string 右边(末尾) 的空白字符
string.strip() // 截掉左右两边的空白字符

(5)判断类型

string.isspace()  // 如果string 中只包含空格,则返回True (需注意:\t,\n,\r 等都是空白字符)  *
string.isalnum() // 如果string至少有一个字符并且所有字符都是字母或数字则返回True    *
string.isalpha() // 如果 string 至少有一个字符并且所有字符都是字母则返回True    *
'''


这三种判断数字方法的区别
-三者都不能判断浮点数
-isdecimal 只能判断阿拉伯数字,不能判断unicode 字符串 (\u00b2,unicode字符 平方)。 最常用的*
-isdigit      除了能判断阿拉伯数字以外还能判断, unicode 字符串
-isnumeric 阿拉伯数字,unicode,汉字数字都能判断
string.isdecimal() // 如果 string 只包含数字则返回 True, 全角数字   * 
string.isdigit() // 如果string只包含数字则返回True,全角数字  *
string.isnumeric() //如果string只包含数字则返回True,全角数字
'''
string.istitle()  // 如果string 是标题化(每个单词的首字母大写)则返回 True
string.islower()// 如果string 中包含至少一个区分大小写的字符,并且所有这些字符都是小写,则返回True
string.isupper()// 如果String 中包含至少一个区分大小写的字符,并且所有这些字符都是大写,则返回True;	

(6)查找和替换

string.startswith(str) // 检查字符串是否以str开头,是则返回True   *
string.endswith(str)  //  检查字符串是否以 str 结束, 是则返回True  * 
string.find(str,start = 0,end = len(string)) // 检测 str 是否包含在 string  中,如果 start 和 end  *
指定范围,则检查是否包含在指定范围内,如果是返回开始的索引值,否则返回 -1
“”“
string.rfind(str,start = 0, end = len(string))  // 类似于find()函数,不过是从右边开始查找
string.index(str,start = 0, end = len(string)) // 与find() 函数类似,不过如果str不在string 会报错
string.rindex(str,start = 0, end = len(string)) // 类似于 index(), 不过是从右边开始
“”“
string.replace(old_str,new_str,num = 数字,count(old))//把 string 中的 old_str 替换成 new_str, 如果 num 指定,则替换不超过 num 次 *
替换完成后,原字符串不会变化,会得到一个新的字符串

(7)分和连接

string.partition(str)// 把字符串 string 分成一个3元素的元组(str前面,str, str 后面)
string.rpartition(str)// 类似于 partition() 方法,不过是从右边开始查找
string.split(str='',num)// 以str 为分隔符拆分 string ,如果num有指定值,则仅分隔num + 1 个子字符串,str 默认包含 \r ,\t,\n和空格
string.splitlines()// 按照行(\r,\n,\r\n)分隔,返回一个包含各行作为元素的列表
string.join(seq) // 以string 作为分隔符,将seq 中所有的元素(的字符表示) 合并为一个新的字符串

poem_str = "再别康桥\t\n徐志摩\t我挥一挥衣袖\t 不带走一片云彩\t\n"
print(poem_str)
#1.拆分
poem_list = poem_str.split()
print(poem_list)
#2.合并
strs = " ".join(poem_list)
print(strs)
举报

相关推荐

0 条评论