json数据和异常捕获

总结

  • json数据 - 是一种通用的数据格式,主要用于不同语言之间的数据传输
"""
json数据格式要求:
1.有且只有一个数据
2.唯一的这个数据必须是json支持的数据类型的数据

json支持的数据类型:
数字类型  -  包含所有的数字,表示的时候直接写。例如说:90、 1.23、 -12、 3e4
字符串  -  "", 用双引号引起来的数据(只能是双引号), 例如说:"你好", "hello", "abc\n123"
bool  -  只有 true 和 false 两个值, 表示的时候直接写。例如: true、 false
空值  -  null
数组  -  相当于列表、表示方式一样,例如:[元素1, 元素2, ...]
字典  -  {键一: 值一, 键二: 值二}, 键只能是字符串
"""
  • python数据和json之间的相互转换
# python中提供了一个系统模块:json、专门用来处理json和python之间的相互转换
"""
json  ->  python
数字       int、float
字符串     str(可能会将双引号变成单引号)
布尔       bool, true -> True 、 false -> False
null      None
数组       列表(list)
字典       字典(dict)

json.loads(json格式的字符串)  -  将json格式的字符串中年的内容转换成python数据
json格式的字符串  -  指的是字符串内容是json数据的字符串。(字符串去掉引号后本身就是一个合法json数据的字符串)

'abc'  -   不是
"abc"  -   不是
'"abc"'  -  是
'true'  -  是
"""
import json
# json 转 python
result = json.loads('100')
print(result, type(result))  # 100 <class 'int'>

result = json.loads('{"name": "小明", "age": 12}')
print(result, type(result))  # {'name': '小明', 'age': 12} <class 'dict'>
# python 转 json
"""
python    ->    json
int、float       数字
str              字符串(引号会变成双引号)
bool             布尔:True -> true   False -> false
None             null
list、tuple       数组
dict             字典(key会加双引号)


json.dumps(python数据)        -  将python数据转换成json格式的字符串
"""

result = json.dumps(100)
print(result, type(result))  # 100 <class 'str'>

result = json.dumps([100, 'abc', True, None])
print(result, type(result))  # [100, "abc", true, null] <class 'str'>

result = json.dumps({'a': 100, 10: 20, 30: 40})
print(result, type(result))  # {"a": 100, "10": 20, "30": 40} <class 'str'>
  • 异常捕获
# 1.什么是异常
# 程序在执行过程中报错(崩溃),就叫程序出现异常错误就是异常
# 当程序出现异常的时候,程序会直接结束,不会执行异常后边的代码。
# 2.异常捕获
# 异常捕获就是让程序出现异常的时候,程序不崩溃,还可以接着往后执行。
# 注意:不是什么时候都需要捕获异常的,而是程序员知道某个地方会出现异常,
# 但是又没有办法通过修改自己的代码来避免这个异常(因为使用者使用不当导致的异常),
# 这个时候才需要对异常进行捕获
# 3.捕获异常
"""
方式一:  -   捕获所有类型的异常
try:
    代码段1(需要捕获异常的代码)
except:
    代码段2(捕获异常后会执行的代码)
其他代码

执行过程:先执行代码段1,如果执行过程没有出现异常不会执行代码段2,直接执行后面的其他语句;
        如果执行代码段1的时候出现异常,直接执行代码段2,执行完代码段2再执行后面的其他语句。


方式二:   -   捕获指定类型的异常
try:
    代码段1(需要捕获异常的代码)
except 异常类型:
    代码段2(捕获异常后会执行的代码)
其他代码

方式三:   -   同时捕获多种异常, 针对不同的异常做相同的处理
try:
    代码段1
except(异常类型1, 异常类型2, 异常类型3, ...):
    代码段2


方式四:   -   同时捕获多种异常,然后针对不同的异常做不一样的处理
try:
    代码段1
except 异常类型1:
    代码段11
except 异常类型2:
    代码段22
except 异常类型3:
    代码段33
"""
print('============方式1================')
# try:
#     a = int(input('请输入数字:'))
#     if a > 18:
#         print('成年')
#     else:
#         print('未成年')
# except:
#     print('请重新输入')
#
# print('end')

print('===========方式2==========')
# try:
#     print([10, 20][3])
# except KeyError:
#     print('出现异常!')


# 4.finally  -  写遗书
"""
try:
    需要捕获异常的代码段
except:
    捕获到异常后需要执行的代码段
finally:
    代码段
    
finally后面的代码段不管try后面发生了什么都会执行:
1)try后面的代码没有异常,代码段会执行
2)try后面的代码出现异常被捕获到,代码段会执行
3)try后面的代码出现异常有没捕获到,代码段会执行
"""
# try:
#     print('abc'[3])
# except IndexError:
#     print('捕获异常')
# finally:
#     print('写遗书')


# 5.抛出异常
# 主动让程序崩溃
# 语法: raise 异常类型

class AgeError(Exception):
    def __str__(self):
        return '年龄值错误,年龄的有效范围时0~200!'


age = 233
if age > 200 or age < 0:
    raise AgeError
  • 正则语法
import re
# tel = input('请输入手机号:')
# result = re.fullmatch(r'1[3-8]\d{9}', tel)
# print(result)

# message = 'msh12海事局340计算机上7水电费'
# result = re.sub(f'\d+', '+', message)
# print(result)  # msh+海事局+计算机上+水电费

# 1.什么是正则表达式
# 正则表达式是处理字符串数据问题的工具(可以让很多复杂的字符串问题变得很简单)

from re import fullmatch
# fullmatch(正则表达式, 字符串)  -  让正则表达式和字符串进行完全匹配,如果匹配失败返回None
# 正则表达式:r'正则表达式'  -  python;   /正则表达式/  -  JS

# 2.正则语法(不是python特有的,在不同的语言中使用语法大同小异)
# 1)普通字符  -  在正则表达式中表示符号本身的字符。
# 2).  -  匹配一个任意字符
# r'abc.'  -  匹配一个字符串前是三个字符分别是a, b和c,最后一个字符是任意字符。
result = fullmatch(r'abc.', 'abck')
print(result)

# r'1..2'  -  匹配一个字符有4个字符,第一个字符是1,最后一个字符是2,中间任意两个字符
result = fullmatch(r'1..2', '1ll2')
print(result)

# 3) \d  -  匹配一个任意数字
# r'abc\d'  -  匹配一个字符串,有4个字符,前三个字符是abc,最后一个字符是任意数字
re_str = r'abc\d'
result = fullmatch(re_str, 'abc2')
print(result)

# 4)\D  -  匹配任意一个非数字字符
re_str = r'x\Dy'
result = fullmatch(re_str, 'x^y')
print(result)

# 5) \s  -  匹配一个任意空白字符
# 空白字符  -  凡是能产生空白效果的字符, 例如:空格、\n 、\t
re_str = r'abc\s123'
result = fullmatch(re_str, 'abc\n123')
print(result)

# 6) \S  -  匹配任意一个非空白字符
re_str = r'abc\S123'
result = fullmatch(re_str, 'abc)123')
print(result)
# 7) [字符集]   -   匹配字符集中的任意一个字符
# 注意:一个中括号只能匹配一个字符
# 匹配一个字符串有三个字符,第一个是x,最后一个是y,中间是1或者m或者n
re_str = r'x[1mn]y'
print(fullmatch(re_str, 'x1y'))
print(fullmatch(re_str, 'xmy'))
print(fullmatch(re_str, 'xny'))


re_str = r'x[mn\d]y'  # 相当于:r'x[mn0123456789]y'
print(fullmatch(re_str, 'x1y'))
print(fullmatch(re_str, 'xmy'))


re_str = r'x[1-7]y'  # 相当于r'x[1234567]y'
print(fullmatch(re_str, 'x5y'))

re_str = r'x[A-Z]y'  # x和y之间是任意大写字母
print(fullmatch(re_str, 'xAy'))

re_str = r'x[\da-zA-Z]y'  # x和y之间是一个数字或者字母
print(fullmatch(re_str, 'xfy'))

re_str = r'x[,\da-z?]y'   # x和y之间是逗号、问号、数字、或者小写字母

# 8)[^字符集]  -  匹配不在字符集中的任意一个字符
re_str1 = r'x[^a-z]y'
print(fullmatch(re_str1, 'xAy'))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值