python string类型_Python数据类型_字符串类型

字符串类型的常用操作

按索引取值(正向取+反向取):只能取

msg = "hello world"

print(msg[0])

print(msg[-1])

长度len

msg = "hello\n"

print(len(msg))

成员运算 in 和 not in

msg = "hello world"

print("ello" in msg)

print("lo w" not in msg)

不是所有的功能运行完毕都有返回值, 可以用打印返回为None确认

res = print("hello world")

print(res)

切片(顾头不顾尾,步长): 其实是赋值一段字符串为新值,不是取走

msg = "hello world"

res = msg[1:5:1] # [头:尾:步长]===> 1 2 3 4, 和range(1, 5, 1)用法相似

res1 = msg[:] # 从头取到尾, 复制整个字符串, 但id不变, 等于 res1 = msg

res2 = msg[1:] # 取到末尾, 默认步长为1

res3 = msg[:5] # 从头取, 默认步长为1

res4 = msg[-1:-3:-1] # 倒着取-1 -2, 步长实为取值方向

res5 = msg[::-1] # 倒着从尾取到头, 等于[-1::-1]

内置方法: split 和 rsplit 按指定的符号切分字符串

msg = "test:30:20" # split按符号切分,和按索引位置msg[1:5:1]切片不同,无须知道切的字符个数

res = msg.split(":", 1) # split("指定符号", 从左到右切分的次数, 不加则全切)

r_res = msg.rsplit(":", 1) # rsplit("指定符号", 从右到左切分的次数, 不加则全切),因为没步长的概念

内置方法: join

msg = ["test", "30", "20"] # 列表中都是字符串,不是整型

res = ":".join(msg) # 列表中只能是同种类型才能join, 否则报错

print(type(res)) #

内置方法: strip 模糊匹配并去除字符串左右两边的空白或符号或转义符

msg = " \n hello world \n "

res = msg.strip()

msg = "!@#$%^() hello ^_^ world ()^%$"

res = msg.strip("()!@#$%^_&*") # strip("")括号中的引号不能省,引号中的指定符号为模糊匹配字符串两边

内置方法: lstrip 去除字符串左边的符号 和 rstrip 去除字符串右边的符号

msg = "@!#$% hello &^% world &*(^#"

l_res = msg.lstrip("!@#$%^&*()") # strip没有计数或步长的功能,以此为扩展

r_res = msg.rstrip("!@#$%^&*()")

内置方法: replace 精确匹配并去除字符串任意位置的符号

msg = "^@_@^ hello @^_^@ world @^_^@"

res = msg.replace("@^_^@", "", 1) # replace("须替换源", "替换目标,引号中空为去除", 从左到右替换几次), replace不是改原值,是产生新值

内置方法: lower 字符串小写 和 upper 字符串大写

msg = "AAbb!@#$%^&CCdd"

l_msg = msg.lower() # lower()中标self, 括号中什么都不写

u_msg = msg.upper() # 字符串是不可变类型, 所以都是产生新值, 不改原值

内置方法: startswith 和 endswith 判断是否以指定字符开头或结尾

msg = "hello"

print(msg.startswith("he")) # 用来条件判断

print(msg.endswith("lo"))

内置方法: isdigit 判断str内, 或bytes中是否为纯整数, 识别范围isnumeric >isdigit >isdecimal

num1 = b"18" # bytes

num2 = u"18" # unicode,Python3中默认,无需加u就是unicode

print(num1.isdigit()) # 条件判断,只有整型才为True, 加空格,浮点型都为假

print(num2.isdigit())

age = input("Pls input your age: ").strip() # 适用示例

if age.isdigit():

age = int(age)

if age == 18:

print("Bingo")

else:

print("Guess Wrong")

else:

print("It must be digit.")

内置方法: isnumeric 判断str内阿拉伯整数,中文数字,罗马数字

num2 = u"18"

num3 = "四" # 中文数字

num4 = "Ⅳ" # 罗马数字

print(num2.isnumeric()) # 和isdigit用法类似

print(num2.isdecimal()) # isdecimal只能判断str内的阿拉伯整数,其他都不行,识别范围最小,最精准

print(num3.isnumeric()) # isdigit不能识别中文数字

print(num4.isnumeric()) # isdigit不能识别罗马数字

内置方法: is其他 其他判断

print("felix123".isalnum()) # 字符串由字母或数字组成

print("felix".isalpha()) # 字符串只能由字母组成

print("felix123".islower()) # 字母是否都为小写, 数字不管

print("FELIX123".isupper()) # 字母是否都为大写, 数字不管

print(" ".isspace()) # 是否为空格

print("My Name Is Felix".istitle()) # 只能首字母大写

内置方法: find, rfind, index, rindex 查找 和 count 统计

msg = "hello world"

res = msg.find("wo", 0, 3) # find("查找目标", 起始范围, 结束范围)顾头不顾尾,从左往右找子字符串在字符串中出现的第一个位置

r_res = msg.rfind("wo") # 从右往左找在字符串中的第一个位置,位置计数仍从左往右算

print(res) # 找不到不报错,结果显示为-1

i_res = msg.index("woo") # 和find用法一样,但是找不到会报错

c_res = msg.count("wo", 1, 9) # count("统计目标", 起始位置, 结束范围)顾头不顾尾,从左往右统计子字符串在字符串中出现的次数

内置方法: center, ljust, rjust, zfill 控制打印位置

name = "felix"

print(name.center(20, "*")) # center(打印宽度, "填充符号"))居中显示

print(name.ljust(20, "*")) # ljust(打印宽度, "填充符号")靠左显示

print(name.rjust(20, "*")) # rjust(打印宽度, "填充符号")靠右显示

print(name.zfill(20)) # zfill(打印宽度), 长度不够置0, 靠右对齐

内置方法: expandtabs控制制表符的空格个数

print("hello\tworld".expandtabs(1)) # 默认制表符为4个空格,现改为1个

内置方法: capitalize, swapcase, title

msg = "hello world"

print(msg.capitalize()) # 句首大写

print(msg.title()) # 每个单词的首字母大写

msg_2 = "AbCdE"

print(msg_2.swapcase()) # 两极反转,大写变小写,小写变大写

格式化字符串的三种方法

最老的方式一: %号

x = "felix"

y = "18"

msg = "My name is %s and my age is %s" % (x, y)

print(msg)

方式二: str.format 运行效率居中,Python2通用,推荐

x = "felix"

y = "18"

msg_1 = "My name is {} and my age is {}".format(x, y)

msg_2 = "My name is {0} and my age is {1} and {1}{0}{1}".format(x, y) # 类似列表取值

print(msg_1, msg_2)

msg = "My name is {name} and my age is {age}".format(age=18, name="felix") # name和age都是变量名

print(msg)

3.5解释器最新引入的方式三: f-Strings 速度最快,Python2不能用

x = "felix"

y = "18"

msg = f"My name is {x} and my age is {y}"

print(msg)

方式四: 标准库模板

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值