一、python的基本数据类型
类型 | type | 例子 |
---|---|---|
整数 | int | -10 |
长整型 | long | 10000000000L |
浮点数 | float | 2.05 |
字符串 | string | I love python |
列表 | list | [“python”,“java”,9.7] |
元组 | tuple | (“python”,“java”,9.7) |
字典 | dictionary | {“name”:“emily”,“company”:“whatever”,“grade”:“17”} |
集合 | set | {1,2,3} |
布尔型 | bool | true,false |
echo 'print(3*7)' | python
# 输出21,使用python语法计算
echo 3*7
# 输出3*7,输入什么就输出什么
1、字符串
- 字符串:可以通过使用
单引号
或双引号
或三引号
来定义,用于表示文本信息- ‘’ “” ‘’’ ‘’’ 定义字符串
-
json
:什么是json
-
json.loads()
json字符串-转化-字典 -
json.dumps()
字典转化成json
-
# 单行
str_a = "a"
str_c = 'c'
# 多行
str_b = """
这是一段多行字符串
"""
2、 转义字符
转义字符在字符串中用于表示一些特殊字符或序列,以及插入难以直接输入的字符。
常见的转义字符包括:\n
表示换行符,\t
表示制表符,\"
表示双引号,\'
表示单引号,\\
表示反斜杠。
通过使用转义字符,可以在字符串中插入特殊字符或表示这些无法直接输入的内容。
message = "Hello\nWorld!"
print(message)
3、字符串下标
下标是指从 0
开始的数字编号,也称为索引。
在字符串中,每一个字符都会对应一个下标,通过下标可以获取字符串中该下标对应的字符
语法格式:字符串对象[下标]
s = "hello"
print(s[0])
print(s[3])
print(s[5]) # 该行代码会报错
4、字符串处理
(1)统计查找替换类
-
len()
用来获取参数字符串的字符个数,该函数并不是字符串类型特有的,而是一个通用函数 格式:len(obj)
str =len( 'python 还好')
print(str)
-
count()
返回str
在string
里面出现的次数,如果start
或者end
指定则返回指定范围内str
出现的次数 格式:count(str, start, end)
s = "hello world hello Python"
n = s.count("o")
print(n)
n = s.count("O")
print(n)
n = s.count("or")
print(n)
n = s.count("o",10,30)
print(n)
-
index()
检测sub
是否包含在string
中,如果start
和end
指定范围,则检查是否包含在指定范围内,如果是返回开始的索引值,否则抛出一个异常 格式:index(sub, start, end)
s = "Hello"
print(s.index("l"))
print(s.index("l",0,3)) # 区间使用下标位置,左闭右开区间
print(s.index("k"))
-
rindex()
作用同index()
,查找子串时从右侧查找,若找不到会抛出一个异常 格式:rindex(sub, start, end)
s = "Hello"
print(s.rindex("l"))
print(s.rindex("l",0,3))
print(s.rindex("k"))
-
find()
检测sub
是否包含在string
中,如果start
和end
指定范围,则检查是否包含在指定范围内,如果是返回开始的索引值,否则返回-1 格式:find(sub, start, end)
s = "Hello"
print(s.find("l"))
print(s.find("l",0,3))
print(s.find("k"))
-
rfind()
作用同find()
,查找子串时从右侧查找,若找不到会抛出一个异常 格式:rfind(sub, start, end)
s = "Hello"
print(s.rfind("l"))
print(s.rfind("l",0,3))
print(s.rfind("k"))
-
replace()
把 string 中的 old 替换成 new,如果 max 指定,则替换不超过 max 次. 格式:replace(old, new, max)
"""字符串常用API之replace"""
# replace:将目标的字符串替换为想要的字符串
d = "my name is yuanweiji"
print(d.replace("yuanweiji", "zhizhi"))
(2)字符串判断类
-
startwith()
检查字符串是否是以 prefix 开头,是则返回 True,否则返回 False。如果 start 和 end 指定值,则在指定范围内检查. 格式:startwith(prefix, start, end)
url = "https://www.ceshiren.com"
print(url.startswith("https://"))
print(url.startswith("https://", 0, 3))
print(url.startswith("https://", 5, 30))
-
endswith()
检查字符串是否是以 suffix 开头,是则返回 True,否则返回 False。如果 start 和 end 指定值,则在指定范围内检查. 格式:endwith(suffix, start, end)
url = "https://www.ceshiren.com"
print(url.endswith(".com"))
print(url.endswith(".com", 0, 20))
print(url.endswith(".com", 5, 30))
-
isalpha()
如果 string 至少有一个字符并且所有字符都是字母则返回 True, 否则返回 False 格式:isalpha()
print("abc".isalpha())
print("ABC".isalpha())
print("ABCabc".isalpha())
print("123".isalpha())
print("a b".isalpha())
print("abc123".isalpha())
print("123abc".isalpha())
print("a@".isalpha())
print("".isalpha())
-
isdigit()
如果 string 只包含数字则返回 True 否则返回 False. 格式:isdigit()
print("123".isdigit())
print("123abc".isdigit())
print("abc123".isdigit())
print("".isdigit())
-
isalnum()
如果 string 至少有一个字符并且所有字符都是字母或数字则返回 True,否则返回 False 格式:isalnum()
print("abc".isalnum())
print("ABC".isalnum())
print("ABCabc".isalnum())
print("123".isalnum())
print("abc123".isalnum())
print("123abc".isalnum())
print("a b".isalnum())
print("a@".isalnum())
print("".isalnum())
-
isspace()
如果 string 中只包含空格,则返回 True,否则返回 False. 格式:isspace()
print(" ".isspace())
print(" ".isspace()) # tab键,由4个空白组成
print("\t".isspace())
print("\n".isspace())
print("\r".isspace())
print("".isspace())
print(" a".isspace())
print("1 ".isspace())
-
isupper()
如果 string 中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是大写,则返回 True,否则返回 False 格式:isupper()
print("ABC".isupper())
print("ABC123".isupper())
print("123ABC".isupper())
print("A!@#B".isupper())
print("abc".isupper())
print("abC".isupper())
print("abc123".isupper())
print("Abc!@#".isupper())
print("123".isupper())
print("".isupper())
print(" ".isupper())
-
islower()
如果 string 中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是小写,则返回 True,否则返回 False 格式:islower()
print("abc".islower())
print("abc123".islower())
print("ABC".islower())
print("abC".islower())
print("Abc!@#".islower())
print("123".islower())
print("".islower())
print(" ".islower())
-
istitle()
如果 string 是标题化的(所有单词首字符是大写)则返回 True,否则返回 False 格式:istitle()
print("Username".istitle())
print("User Name".istitle())
print("User_Name".istitle())
print("User.Name".istitle())
print("User+Name".istitle())
print("username".istitle())
print("UserName".istitle())
print("user name".istitle())
print("User name".istitle())
(3)字符串转换类
-
capitalize()
把字符串的第一个字符大写 格式:capitalize()
print("username".capitalize())
print("Username".capitalize())
print("userNAME".capitalize())
print("this is username".capitalize())
-
title()
返回"标题化"的 string,就是说所有单词都是以大写开始,其余字母均为小写 格式:title()
print("this is username".title())
print("THIS IS USERNAME".title())
print("tHIS IS username".title())
-
upper()
转换 string 中的小写字母为大写 格式:upper()
print("abc".upper())
print("ABC".upper())
print("abCd".upper())
print("abc123".upper())
print("abc123ABC".upper())
-
lower()
转换 string 中的小写字母为小写 格式:lower()
print("abc".lower())
print("ABC".lower())
print("abCd".lower())
print("abc123".lower())
print("abc123ABC".lower())
(4)字符串对齐类
-
center()
返回一个原字符串居中,并使用空格填充至长度 width 的新字符串,如果指定fillchar参数,则使用指定字符填充,fillchar参数长度只能为1 格式:center(width, fillchar)
print("|"+"hogworts".center(20) + "|")
print("|"+"hogworts".center(5) + "|")
print("|"+"hogworts".center(20, "-") + "|")
-
ljust()
返回一个原字符串左对齐,并使用空格填充至长度 width 的新字符串,如果指定fillchar参数,则使用指定字符填充,fillchar参数长度只能为1 格式:ljust(width, fillchar)
print("|"+"hogworts".ljust(20) + "|")
print("|"+"hogworts".ljust(5) + "|")
print("|"+"hogworts".ljust(20, "-") + "|")
-
rjust()
返回一个原字符串右对齐,并使用空格填充至长度 width 的新字符串,如果指定fillchar参数,则使用指定字符填充,fillchar参数长度只能为1 格式:ljust(width, fillchar)
print("|"+"hogworts".rjust(20) + "|")
print("|"+"hogworts".rjust(5) + "|")
print("|"+"hogworts".rjust(20, "-") + "|")
(5)字符串去除空白类
-
strip()
删除 string 左右两侧的空白字符, 如果指定chars参数,则删除左右两侧指定的字符 格式:strip(chars)
print("|" + " hogworts " + "|")
print("|" + " hogworts ".strip() + "|")
print("|" + " hogworts".strip() + "|")
print("|" + "hogworts ".strip() + "|")
print("|" + " h o g w o r t s ".strip() + "|")
print("|" + "bachogwortsabc".strip("cba") + "|")
-
lstrip()
删除 string 左边的空白字符, 如果指定chars参数,则删除左两侧指定的字符 格式:lstrip(chars)
print("|" + " hogworts " + "|")
print("|" + " hogworts ".lstrip() + "|")
print("|" + " hogworts".lstrip() + "|")
print("|" + "hogworts ".lstrip() + "|")
print("|" + " h o g w o r t s ".lstrip() + "|")
print("|" + "bachogwortsabc".lstrip("cba") + "|")
-
rstrip()
删除 string 左边的空白字符, 如果指定chars参数,则删除右两侧指定的字符 格式:lstrip(chars)
print("|" + " hogworts " + "|")
print("|" + " hogworts ".rstrip() + "|")
print("|" + " hogworts".rstrip() + "|")
print("|" + "hogworts ".rstrip() + "|")
print("|" + " h o g w o r t s ".rstrip() + "|")
print("|" + "bachogwortsabc".rstrip("cba") + "|")
(6)字符串分割类
-
split()
以 sep 为分隔符分割 string,如果指定 maxsplit 参数,则仅分割 maxsplit次 格式:split(sep, maxsplit)
- split:数据切分操作
- 根据split内的字符串进行切分,将字符串根据规定的内容进行切分。以什么内容进行切分,那么这个内容也会没有
print("a-b-c-d".split("-"))
print("a-b-c-d".split("-", 2))
print("a--b-c-d".split("-"))
print("a-+b-c-d".split("-+"))
print("a b\tc\nd\re".split())
print("a b c d e".split(" ", 3))
b = "a|p|p|l|e"
print(b.split("|"))
c = "i am stupid"
print(c.split(" "))
-
splitlines()
使用换行符\n
分割 string,如果指定keepends
参数,则结果中会保留\n
符号 格式:splitlines(keepends)
print("a\nb\nc".splitlines())
print("a\nb\nc".splitlines(True))
-
partition()
从 sep 出现的第一个位置起,把 string 分成一个3元素的元组 (string_pre_sep,sep,string_post_sep),如果 string 中不包含 sep 则 string_pre_str == string,其余元素为空字符串 格式:parttion(sep)
print("This is Hogworts".partition("is"))
print("This is Hogworts".partition("iss"))
-
rpartition()
从右向左 sep 出现的第一个位置起,把 string 分成一个3元素的元组 (string_pre_sep,sep,string_post_sep),如果 string 中不包含 sep 则 string_post_str == string,其余元素为空字符串 格式:rparttion(sep)
print("This is Hogworts".rpartition("is"))
print("This is Hogworts".rpartition("iss"))
(7)字符串连接类
-
+号
将两个字符串连接生成一个新字符串,+
号两侧必须都是字符串 格式:str1 + str2
print("Hello" + "World")
print("Hello" + "123")
print("Hello" + 123)
-
*号
将字符串重复N次后生成一个新字符串 格式:str * n
print("*"* 10)
print("hello"* 10)
-
join()
使用 string 连接可迭代对象中的所有元素,可迭代对象参数中的所有元素必须是字符串 格式:join(iterable)
print("".join(("a","b","c")))
print("-".join(("a","b","c")))
print("->".join(("a","b","c")))
print("->".join(["a","b","c"]))
print("->".join({"a","b","c"}))
print("->".join({"a":"A","b":"B","c":"C"}))
"""字符串常用API之join"""
# join:列表,根据想要的格式拼接成字符串
a = ["a", 'p', 'p', 'l', 'e']
print("|".join(a))
(8)编码解码类
-
encode()
使用 encoding 指定的字符集,对 string 进行编码,转换成二进制字符串 格式:encode(encoding)
print("abc123".encode("gbk"))
print("你好".encode("gbk"))
print("abc123".encode("utf-8"))
print("你好".encode("u8"))
-
decode()
使用 encoding 指定的字符集,对 string 进行解码,转换成字符串对象, string必须是二进制字符串 格式:decode(encoding)
s1 = b'\xc4\xe3\xba\xc3'
s2 = b'\xe4\xbd\xa0\xe5\xa5\xbd'
print(s1.decode("gbk"))
print(s2.decode("utf-8"))
# print(s1.decode("u8"))
# print(s2.decode("gbk"))
(8)切片操作
对字符串按指定的范围进行截取,得到一个子字符串,指定范围时,起始下标必须小于结束下标,且子字符串不包含结束下标
格式:str[start: end: step]
python
s = "abcdefg"
# 普通切片
print(s[0: 2])
# 省略范围
print(s[0:])
print(s[: 2])
print(s[:])
# 指定步长
print(s[::1])
print(s[::2])
# 负下标
print(s[-3: -1])
# 负步长
print(s[-1: -3: -1])
# 逆序
print(s[::-1])
str = 'python 还好'
print(str[0:-1]) # 输出第一个到倒数一个的所有字符串(-1代表最后一个,左闭右开),不包括最后一个
print(str[0]) # 输出第一个字符串
print(str[2:5]) # 输出低三个到第五个字符
print(str[2:]) # 输出第三个开始后的所有字符
str = 'python 还好'
print(str.count("l")) # 返回l的个数
print(str.find("o")) # 返回o的索引
print(str.capitalize()) # 首字母变大写
print(str.encode("gb2312")) # 转码
print(str.find("n")) # 返回n的索引
print(str) # 输出字符串
print(str[0:-1]) # 输出第一个到倒数一个的所有字符串(-1代表最后一个,左闭右开),不包括最后一个
print(str[0]) # 输出第一个字符串
print(str[2:5]) # 输出低三个到第五个字符
print(str[2:]) # 输出第三个开始后的所有字符
print(str * 2) # 输出字符串2次
print(str + 'TEST') # 连接字符串
print(len(str))
print(str.startswith("python")) # 是不是以python开头,返回布尔值
b = '20'
print(b.isdecimal()) # 是否是数字
print(str.upper()) # 大写
print(str.title()) # title
str0 = 'python 呵呵'
print(str0.replace(str0[0:6], 'java'.upper())) # 将python换成大写的java
print(str*4)
s1 = '_'
s2 = ""
seq = ("l", "i", "n", "d", "a") # 字符串序列
print(s1.join(seq))
print(s2.join(seq))
str4 = "编号 标题 测试数据 测试结果"
(no, title, test_data, test_result) = str4.split(" ")
print(test_data)
# 格式输出
print('Hi, %s, you have $%d.' % ('linda', 10000))
print('Hello,{0},成绩提升了 {1:.1f}%'.format('小明', 17.125)) # 保留小数点后一位
print("{} {}".format("hello", "world")) # 不设置指定位置,按默认是顺序
5、字符串格式化
字符串格式化是一种将变量或值插入到字符串中的过程,以创建具有动态内容的字符串。
在Python中,可以使用format()方法和f-string(格式化字符串字面值)来进行字符串格式化。
(1)format()方法
format()方法是一种传统的字符串格式化方法。它使用占位符 {} 来表示要插入的变量或值,并通过传递参数来替换这些占位符。
"""字符串之字面量插值"""
# format的使用
# 第一个参数放在0的位置,第二个参数放在1的位置
demo = "i am a {1} {0}"
demo2 = "i am {school}"
demo_res = demo.format("zhizhi2", "zhizhi")
demo_res2 = demo2.format(school="灿灿")
# demo是原始的变量内容
print(demo)
# demo_res是替换过去的变量内容
print(demo_res)
print(demo_res2)
(2)f-string字符串
name = "zhizhi"
school = "ruozhidaxue"
print(f"my name is {name},my school is {school}")
表达式和函数调用
在f-string中,可以使用表达式和函数调用来生成动态的字符串内容。
name = "Alice"
age = 25
greeting = f"{'Hello' if age < 30 else 'Hi'} {name.upper()}"
print(greeting)
# 输出:HELLO ALICE