day15
总结
1.json数据
-
什么是json数据
""" json是一种通用的数据格式,主要用于不同语言之间的数据传输。 json数据格式要求: 1. 有且只有一个数据 2. 唯一的这个数据必须是json支持的数据类型的数据 json支持的数据类型: 数字类型 - 包含所有的数字,表示的时候直接写,例如:90、12.6、-23、3e8 字符串 - 用双引号引起来的数据(只能是双引号),例如:“你好”,“hello","abc\n123" 布尔 - 只有true和false两个值,表示的时候直接写,例如:true,false 空值 - null 数组 - 相当于列表,例如:[元素1, 元素2, 元素3] 字典 - {键1:值1, 键2:值2, ...} ,键只能是字符串 """
-
python与json转换
-
json转python
import json """ json -> python 数字 - int,float 字符串 - str(可能会将双引号变为单引号) 布尔 - bool, true -> True, false null - None 数组 - list 字典 - dict json.loads(json格式的字符串数据) - 将json格式的字符串中的内容转换成Python数据 json格式的字符串 - 指的是字符串内容是json数据的字符串。(字符串去掉引号后本身就是一个合法的json数据) """ result = json.loads('"100"') print(result, type(result)) result = json.loads('19.32') print(result, type(result)) result = json.loads('"199"') print(result)
-
python转json
""" python -> json int,float - 数字 str - 字符串(引号会变成双引号) bool - 布尔: True,False -> true,false None - null list/tuple - 数组 dict - 字典 json.dumps(python数据) - 将python数据转化为json格式的字符串 """ result = json.dumps(100) print(result, type(result)) result = json.dumps([18, 32.23, 'hello word', True, None, {'abc': 100, 'hei': 'fae'}]) print(result, type(result)) hashmd5.update(result.encode()) print(hashmd5.hexdigest()) new_str = {'key': hashmd5.hexdigest(), 'content': result} result = json.dumps(new_str) print(result)
-
2. 异常捕获
-
什么是异常
# 程序在执行过程中报错(崩溃),就叫程序出现异常。错误就是异常 # 当程序出现异常, 程序会直接结束,不会执行这个异常后面的代码。 import threading class my_thread(threading.Thread): def __init__(self): threading.Thread.__init__() def run(self) -> None: threading.Thread.run() print('----------') # print('abc'[10]) # IndexError: string index out of range print('==========') print('++++++++++')
-
异常捕获
# 异常捕获就是让程序在出现异常的时候,程序不崩溃还可以接着往后执行 # 注意:不是什么时候都需要捕获异常的,而是程序知道这个地方可能会出现异常,但是又没有办法通过修改自己的代码来避免这个异常 # (因为使用者使用不当导致的异常),这个时候才需要对异常铺货进行铺货。 try: pass # age = int(input('请输入一个年龄(整数):')) except ValueError: pass finally: pass
-
捕获异常
""" 方式一:捕获所有异常 try: 代码段1(需要捕获异常的代码) except: 代码的2(捕获到异常后会执行的代码) 其他代码 执行过程:先执行代码段1,如果执行过程没有出现异常不会执行代码段2,直接执行后面的其他代码; 如果执行代码段1的时候出现异常,直接执行代码段2,执行完代码段2再执行后面的其他代码 """ # age = input("请输入您的年龄:") # while True: # try: # age = int(age) # if 0 > age or age > 150: # raise ValueError # break # except: # age = input("输入有误,请重新输入您的年龄:") # # print(age, 'end') """ 方式二:捕获指定类型异常 try: 代码段1 except 异常类型: 代码段2 其他代码 """ def throw_error(*args, **kwargs): raise Exception(*args, **kwargs) try: # throw_error() print([10, 220][19]) print({'abc': 100}['a']) except IndexError: print('出现异常') """ 方式三:同时捕获多种异常,针对不同的异常做相同的处理 try: 代码段1 except (异常类型1,异常类型2,异常类型3,...): 代码段2 """ """ 方式四:同时捕获多种异常,然后针对不同的异常做不一样的处理 try: 代码段1 except 异常类型1: 代码段11 except 异常类型2: 代码段22 except 异常类型3: 代码段33 ... """ # 4. finally - 写遗书 """ try: 需要捕获异常的代码段 except: 代码段2 finally: 代码段3 finally后面的代码不管try后面发生了什么都会执行: 1) try后面的代码没有异常,代码会执行 2) try后面的代码出现异常被捕获到,代码会执行 3) try后面的代码出现异常没有捕获到,代码段会执行 """ try: pass print('abc'[3]) except IndexError: print('出现异常') finally: # int('12a') # ValueError: invalid literal for int() with base 10: '12a' print('遗书') # 遗书
-
抛出异常 raise
# 主动让程序崩溃 # 语法: raise 异常类型 class AgeError(Exception): def __str__(self): return 'Age value is wrong, age valid range is 0~200!' age = 233 if age > 200 or age < 0: raise AgeError
3. 正则表达式
-
正则表达式
import re # tel = input('请输入电话号码:') # result = re.fullmatch(r'^1[3-8][0-9]{9}$', tel) # print(result) # message = 'msh12哈佛阿文法尔我i340h肺癌发欸我发9觉二' # result = re.sub(r'\d+', '+', message) # print(result)
-
什么是正则表达式
# 正则表达式是处理字符串数据的问题的工具(可以让很多复杂的字符串问题变得简单) from re import fullmatch # fullmatch(正则表达式,字符串) - 让正则表达式和字符串进行完全匹配,如果匹配失败返回None # 正则表达式:‘正则表达式’ - python; /正则表达式/ - js # 2. 正则语法(不是python特有的, 在不同语言中使用语法大同小异) # 1) 普通字符 - 在正则表达式中表示符号本身的字符。 # 2) . - 匹配一个任意字符 # r'abc' - 匹配一个字符串前是三个字符分别是a、b和c,最后一个字符是任意字符 result = fullmatch(r'.*abc.*', 'faeabcfaeaefeicabcf') print(result) result = fullmatch(r'1.{2}2', '1sc2') print(result) # 3) \d - 匹配一个任意数字0-9 # 匹配一个字符串,有4个字符,前三个字符是abc,最后一个字符是任意数字 result = fullmatch(r'abc\d', 'abc1') print(result) # 4) \D - 匹配一个任意非数字0-9 # 匹配一个字符串,有4个字符,前三个字符是abc,最后一个字符是任意数字 result = fullmatch(r'abc\D', 'abc你') print(result) # 5) \s - 匹配任意一个空白字符[ \t\n\r\f] result = fullmatch(r'abc\s123', 'abc\t123', re.S) print(result) # 6) \S - 匹配任意一个非空白字符[ \t\n\r\f] result = fullmatch(r'abc\S123', '''abcs123''', re.S) print(result) # 7) [] - 匹配字符集中的任意一个字符 result = fullmatch(r'[0-9A-Za-z]+', 'faef242') print(result) result = fullmatch(r'.*[\u4e00-\u9fa5].*', 'fae afe发额') print(result) # 7) [^] - 匹配字符集中的任意一个字符 result = fullmatch(r'[0-9A-Za-z]+', 'faef242') print(result) result = fullmatch(r'.*[\u4e00-\u9fa5].*', 'fae afe发额') print(result) line = "Cats are smarter than dogs" matchObj = re.match(r'(.*) are (.*?) .*', line, re.M | re.I) print(matchObj.groups())