Python字符串数据类型之字符串

四、Python数据类型

4.1、Python内置数据类型

  • 整型:int
  • 浮点型:float
  • 布尔类型:bool
  • 字符串:str
  • 二进制类型:bytes、bytearray
  • 复数:complex
  • 列表:list
  • 元组:tuple
  • 字典:dict
    a = 100 # 整型
    print(type(a))
    a = 100.0  # 浮点型
    print(type(a))
    a = True   # 布尔类型
    print(type(a))
    a = '12345' # 字符串类型
    print(type(a))
    a = b'\x01\x02\x03\x04\x05\x06\x07\x08' # 二进制类型
    print(type(a))
    a = 5 + 2j  # 复数
    print(type(a))
    a = [1, 2, 3, '123']  # 列表
    print(type(a))
    a = (1, 2, 3, '123')  #元组
    print(type(a))
    a = {"A1":"B1","A2":"B2","A3":"B3"}  # 字典
    print(type(a))

输出:

<class 'int'>
<class 'float'>
<class 'bool'>
<class 'str'>
<class 'bytes'>
<class 'complex'>
<class 'list'>
<class 'tuple'>
<class 'dict'>

4.2、字符串类型

4.2.1、字符串定义

python 中的字符串字面量由单引号或双引号括起来表示:

a = '12345'
print(a)
a = "12345"
print(a)

字符串也可以使用三个单引号或者三个双引号括起来表示,这种方式支持换行符的输入:

    a = '''
锄禾日当午,
汗滴禾下土。
谁知盘中餐,
粒粒皆辛苦。
        '''

等价于:

a = "锄禾日当午,\n汗滴禾下土。\n谁知盘中餐,\n粒粒皆辛苦。\n"

4.2.2、字符串拼接

4.2.2.1、使用“+”拼接
    str1 = "姓名:"
    str2 = "张三"
    print(str1+str2)

输出:

姓名:张三
4.2.2.2、使用join函数拼接
  • 使用join函数拼接的效率比使用“+”高很多,因为使用“+”会涉及很多内存复制以及垃圾回收操作
  • join只接收一个参数,可以是元组、字典、列表、字符串等
  • 双引号""中的内容会拼接到每两个字符串之间
    string_a = " ".join(["I", "love", "python!"])
    print(string_a)

    string_b = "I"
    string_c = "love"
	string_d = "python!"
    string_e = "*".join([string_b, string_c,string_d])
    print(string_e)

输出:

I love python!
I*love*python!
4.2.2.3、使用格式化输入拼接
    str1 = "姓名:"
    str2 = "张三"
    str3 = "%s%s 年龄:%d" % (str1, str2, 18)
    print(str3)

输出:

姓名:张三 年龄:18
4.2.2.4、使用“*”拼接

“*”用于拼接多个相同的字符串,表示这个字符串重复n次:

    a = "1234x"*3
    print(a)

输出:

1234x1234x1234x

4.2.3、字符串格式化

4.2.3.1、格式化操作符:%
    str1 = "姓名:"
    str2 = "张三"
    str3 = "%s%s 年龄:%d" % (str1, str2, 18)
    print(str3)

输出:

姓名:张三 年龄:18
4.2.3.1、使用format函数

format函数可以通过指定位置和参数来格式化字符串,字符串中使用大括号“{}”表示.

  • 使用位置格式化字符串,数字表示第几个参数,0表示第一个参数,且0是必须得;
  • 使用参数来格式化字符串:大括号“{}”中填写参数,format中填写参数对应的值;
    str1 = "{0} love {1}!".format("I", "python")
    str2 = "{a} love {b}!".format(a="I", b="python")
    print(str1)
    print(str2)

输出:

I love python!
I love python!
4.2.3.3、使用f-strings格式化

f-string,亦称为格式化字符串常量(formatted string literals),是Python3.6新引入的一种字符串格式化方法,该方法源于PEP 498 – Literal String Interpolation,主要目的是使格式化字符串的操作更加简便。f-string在形式上是以 f 或 F 修饰符引领的字符串(f’xxx’ 或 F’xxx’),以大括号 {} 标明被替换的字段;f-string在本质上并不是字符串常量,而是一个在运行时运算求值的表达式:
f-string在功能方面不逊于传统的%-formatting语句和str.format()函数,同时性能又优于二者,且使用起来也更加简洁明了,因此对于Python3.6及以后的版本,推荐使用f-string进行字符串格式化。

  1. f-string使用{}表示被替换字段,里面直接填入被替换内容,被替换内容可以是变量、表达式、函数
    a = 1
    b = 2
    str3 = f"{a} + {b} = {a + b}"
    print(str3)

输出:

1 + 2 = 3
  1. 可以使用冒号 : 后跟格式规范来指定数值或字符串的显示方式
    PI = 3.1415926
    print(f"PI的值约等于:{PI:.3f}") # 保留三位小数
    print(f"PI的值约等于:{PI:<.3f}") # 左对齐,保留三位小数
    print(f"PI的值约等于:{PI:>10.3f}") # 右对齐,总宽度10个字符,保留三位小数
    print(f"PI的值约等于:{PI:^10.3f}") # 居中对齐

输出:

PI的值约等于:3.142
PI的值约等于:3.142
PI的值约等于:     3.142
PI的值约等于:  3.142 
  1. 关于对齐,如果宽度不够默认是补空格,我们也可以指定补充的字符:
    PI = 3.1415926

    print(f"PI的值约等于:{PI:*>10.3f}") # 右对齐,总宽度10个字符,保留三位小数
    print(f"PI的值约等于:{PI:*<10.3f}")  # 做对齐,总宽度10个字符,保留三位小数
    print(f"PI的值约等于:{PI:*^10.3f}") # 居中对齐,总宽度10个字符

输出:

PI的值约等于:*****3.142
PI的值约等于:3.142*****
PI的值约等于:**3.142*** 
4.2.4、字符串处理常用函数
1) 大小写转换str.lower、str.upper以及str.casefold。

lower和casefold都可以把英文字符转换成小写,但是lower只能转换英文字符,casefold还可以转换其它语言的字符。

    str1 = "Hello World!"
    print(str1.upper())
    print(str1.lower())
    print(str1.casefold())

输出:

HELLO WORLD!
hello world!
hello world!
2) 字符串查找和替换

str1.find(substring, start, end)
功能:在字符串str1的起始位置start到结束位置end之间查找子字符串substring,start和end两个参数可以省略,表示在整个字符串中查找
参数:substring表示要查找的子串 start表示字符串起始位置索引,从0开始 end表示字符串结束位置

    str1 = "I love python!"
    print(str1.find("love")) # 在整个字符串中查找
    print(str1.find("love", 1))  # 从第一个字符之后开始查找
    print(str1.find("love", 1, 6))  # 从第一个字符和第6个字符之间查找
    print(str1.find("love", 2, -1))  # 从第2个字符和倒数第一个字符之间查找

str1.replace(old, new, count)
功能:将str1中的old字符串替换为new字符串,如果设置了第三个参数count,则表示最多替换count次

    str1 = "I*love*python!"
    print(str1.replace("*", "-"))  # 将str1中的所有“*”替换成“-”
    print(str1.replace("*", "-", 1))  # 将str1中的“*”替换成“-”且只替换一次
3)判断字符串是否以指定字符串开头或者结尾

str1.endwith(substring, start, end)
功能:判断字符串str1的起始位置start到结束位置end之间的字符串,是否以substring结尾,start和end两个参数可以省略
返回值:成功返回True,失败返回False
str1.startwith(substring, start, end) 参数和返回值、用法与endwith相同

    str1 = "music.wav"
    print(str1.endswith('.wav'))  # 在整个字符串中判断
    print(str1.endswith('.wav', 3)) # 从第三个字符串开始查找
	
    print(str1.startswith('m'))  # 判断字符串是否以‘m’开头
    print(str1.startswith('m', 3))  #判断字符串中第三个字符开始的字符串是否以‘m’开头

输出:

True
True
4)判断字符串是否为纯大小写字符、数字
    print("1234".isdigit())  # 判断字符串是否为数字
    print("abcd".islower())  # 判断字符串是否为纯小写字符
    print("ABCD".isupper())  # 判断字符串是否为纯大写字符
    print(".#$%Y".isascii())  # 判断字符串是否为纯assic字符
    print("   ".isspace())   # 判断字符串是否为纯空格字符

输出:

True
True
True
True
True
  • 17
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值