python速查手册pdf百度网盘,python速查手册基础卷pdf

大家好,本文将围绕python速查手册pdf百度网盘展开说明,python速查手册基础卷pdf是一个很多人都想弄明白的事情,想搞清楚21张python速查表需要先了解以下几个事情。

诸神缄默不语-个人CSDN博文目录

文章目录

1. 运算符

  1. + - * /
  2. " / “就表示 浮点数除法,返回浮点结果;” // "表示整数除法。
  3. 取余% 指数**
  4. 等式:= == > < >= <=
  5. 不等于:!=<>not
  6. 交并:and & VS. or |
  7. 所有的二元数学操作符(+、-、*、/、//、%、**)都有与之对应的增强赋值操作符(+=、-=、*=、/=、//=、%=、**=)

2. Python 3 基础语法

  1. 在Python中,可以同时给多个变量赋值:<变量1>, …, <变量N> = <表达式1>, …, <表达式N>
  2. 长语句跨行可在第一行末尾加入\\
  3. 判断是否是None:
    is not None !=None
  4. 匿名函数:<函数名> = lambda <参数列表>: <表达式>
  5. pass:在需要缩进的部分不写代码(一般都是测试时候不需要跑了),就写个pass顶一下位置python turtle画简单树。啥也不干
  6. 注释以#开头
  7. assert:断言
    用于判断一个表达式,在表达式条件为 false 的时候触发异常。
  8. global
  9. 3.10的新功能:match ... case
    看起来就跟Java里面的switch ... case差不多。我说真的这些编程语言是越来越像了啊

3. Python 3 对象:字符串、列表、元组、集合、字典

  1. 字符串、列表、元组相关内容请参考我写的这篇博文:Python3序列类型(字符串、列表、元组)
  2. 集合
    1. set():初始化集合对象
    2. add(obj):增加单个元素
    3. update(series):将整个序列的所有元素一一增加进集合
    4. set.intersection(set1, set2 ... etc):返回入参集合的交集
    5. {}会创造一个空字典
      universitySet = set(['西南财大', '电子科技大学', '四川大学', '西南交通大学'])
      universitySet = {'西南财大', '电子科技大学', '四川大学', '西南交通大学'}
    6. 集合是无序组合,它没有索引和位置的概念,不能分片。
操作符描述
S – T 或 S.difference(T)返回一个新集合,包括在集合S中但不在集合T中的元素
S-=T或S.difference_update(T)更新集合S,包括在集合S中但不在集合T中的元素
S & T或S.intersection(T)返回一个新集合,包括同时在集合S和T中的元素
S&=T或S.intersection_update(T)更新集合S,包括同时在集合S和T中的元素。
S^T或s.symmetric_difference(T)返回一个新集合,包括集合S和T中元素,但不包括同时在其中的元素
S=^T或s.symmetric_difference_update(T)更新集合S,包括集合S和T中元素,但不包括同时在其中的元素
S|T或S.union(T)返回一个新集合,包括集合S和T中所有元素
S=|T或S.update(T)更新集合S,包括集合S和T中所有元素
S<=T或S.issubset(T)如果S与T相同或S是T的子集,返回True,否则返回False,可以用S<T判断S是否是T的真子集
S>=T或S.issuperset(T)如果S与T相同或S是T的超集,返回True,否则返回False,可以用S>T判断S是否是T的真超集
函数或方法描述
S.add(x)如果数据项x不在集合S中,将x增加到s
S.clear()移除S中所有数据项
S.copy()返回集合S的一个拷贝
S.pop()随机返回集合S中的一个元素,如果S为空,产生KeyError异常
S.discard(x)如果x在集合S中,移除该元素;如果x不在,不报错
S.remove(x)如果x在集合S中,移除该元素;不在产生KeyError异常
S.isdisjoint(T)如果集合S与T没有相同元素,返回True
len(S)返回集合S元素个数
x in S如果x是S的元素,返回True,否则返回False
x not in S如果x不是S的元素,返回True,否则返回False
  1. 字典

    1. 字典的键需要是不变的变量(可以是字符串,数字)
    2. 键:keys() 值:values() 返回的是一个可迭代的对象,是一个视图对象,是只读的
    3. 增加一个键值对:直接使dict_object[k]=v
    4. update(dict_object):将入参字典的键值对更新到原对象中
      (如果键再原对象中就存在,将更新值;如果不存在,将键值对加入原对象)
    5. 字典生成式,示例:{i:str(i) for i in range(10)}
    6. {<键1>:<值1>, <键2>:<值2>, … , <键n>:<值n>}
    7. 键可以是Python中任意的不可变类型:布尔型、整型、浮点型、元组、字符串,以及其他一些不可变的类型。字典本身是可变的,因此可以增加、删除或修改其中的键值对。字典的键必须保证互不相同。
    8. 字典是集合类型的延续,各个元素并没有顺序之分。
    9. <值> = <字典变量>[<键>]
    10. 添加键值对:直接添加
    11. del employee['性别']
    函数和方法描述
    <d>.keys()返回所有的键信息
    <d>.values()返回所有的值信息
    <d>.items()返回所有的键值对
    <d>.get(<key>,<default>)键存在则返回相应值,否则返回默认值
    <d>.pop(<key>,<default>)键存在则返回相应值,同时删除键值对,否则返回默认值
    <d>.popitem()随机从字典中取出一个键值对,以元组(key, value)形式返回
    <d>.clear()删除所有的键值对
    del <d>[<key>]删除字典中某一个键值对
    键/值/元组 in <d>
    setdault()
    <d1>.update(<d2>)
    pprint()pformat()
    <d>.setdefault(key,get_value(key))获取值,如果不存在,计算并存储

参考资料:字典及其内置函数

4. 条件和循环

  1. if判断语句
    if condition_1:
        statement_block_1
    elif condition_2:
        statement_block_2
    else:
        statement_block_3
    
  2. while
    1. break:结束循环
    2. continue:跳过本轮循环,直接进入下一轮循环
    while 判断条件(condition):
        执行语句(statements)……
    
    while <expr>:
        <statement(s)>
    else:
        <additional_statement(s)>
    
  3. for循环语句:匿名变量可以用_指代
    for <variable> in <sequence>:
        <statements>
    else:
        <statements>
    

5. 对Python 3 对象的处理:排序、过滤、迭代、删除,查看属性

  1. 排序
    1. sorted():返回对象元素排序后的结果
    2. sort():对对象进行排序,返回None
  2. filter(function,iterable)1:过滤
    1. 示例:list(filter(None,[None,'1111111','2222222'])):将列表中的空对象删掉,返回['1111111', '2222222']
  3. 同时迭代多个迭代器,按顺序同时输出多个迭代器里的元素:用 zip()2
    举例:
    L1=['a','b','c','d','e','f','g','h']
    L2=['A','B','C','D','E','F','G','H']
    for (l1,l2) in zip(L1,L2):
        print(l1+' '+l2)
    
  4. len(object):返回对象的长度
  5. 对象的所有属性:object.__dict__(返回一个字典)
  6. 检查对象是否具有某一属性:object.hasattr()
  7. id()
  8. all(iterable_object):判断所有元素是否都为 TRUE,如果是返回 True,否则返回 False。3
  9. any()
  10. del

6. 函数入参

位置参数,关键字参数,指定默认参数值
使用*收集位置参数,使用**收集关键字参数(星号本身不是参数)4
列表、元组前面加星号作用是将列表解开成两个独立的参数,传入函数,字典前面加两个星号,是将字典解开成独立的元素作为形参
举例:

def add(a, b):
    return a+b
 
data = [4,3]
print (add(*data)) #输出7
data = {'a' : 4, 'b' : 3}
print (add(**data)) #输出7
print (add(*data)) #输出'ab'

6. Python 3 内置函数

  1. round(浮点数,保留小数点后的位数):返回数字舍入后的结果
  2. eval(str):执行字符串格式的表达式,并返回表达式结果
  3. range(obj:int):返回以0为第一个元素、以obj-1为最后一个元素的迭代器
    参数:开始值,末值,步长
  4. enumerate(sequence,[start=0]):返回enumerate(枚举)对象,每个元素是一个元组(第一个元素是索引,第二个元素是sequence中对应的元素)5
  5. iter(object):返回迭代器
  6. map(function,iterable,...):对指定序列做映射,将结果返回
    代码:list(map(lambda x: x ** 2, [1, 2, 3, 4, 5]))
    输出:

    [1, 4, 9, 16, 25]

  7. ord():以一个字符串(Unicode 字符)作为参数,返回对应的 ASCII 数值,或者 Unicode 数值。6
  8. chr():用一个整数作参数,返回一个对应的字符。7
  9. 直接转换对象类型:如
    1. 数字类型转换函数:float(x) int(x) str(x)
    2. list(x)
    3. str(x)
  10. 退出程序运行(仅在脚本运行时起效,在Jupyter Notebook中无效):exit()
  11. 输出对象类型:type(obj)

7. 异常捕获:try-except语句

else,finally保留字

except Exception as e

  1. 异常:raise Exception(message:str) Exception可以替换成其他Exception子类
  2. Exception子类:
    1. ValueException

8. 与终端的输入输出互动

1. 打印/输出

print(打印内容)

会自动在末尾添加换行符

如果打印后不想换行,可以使用参数end

  1. 打印颜色:"\033[31m本段文字将会显示成红色\033[0m\n"
    更多使用方法可参考此篇博文:Python基础之控制台输出颜色_zxnode的博客-CSDN博客

打印颜色还可以用termcolor(使用termcolor包美化Python命令行输出
想要更好看的打印格式还可以用pprint(pprint包的使用介绍

2. 输入

input():函数等待用户在键盘上输入一些文本,并按下回车键。这个函数的值为一个字符串,即用户输入的文本。输入参数为显示标识

9. 上下文管理器

with+上下文管理器:在使用的过程中,可以简单地认为with语句自动设置一种状态的环境,不需要显式控制开始和结束。如with open('file.txt') as f:语句下包裹的代码运行之间自动打开文件流,运行后自动关闭;with torch.no_grad():语句下包裹的代码自动停止梯度计算。更多细节可参考8

contextlib包:提供了一些用于创建和管理上下文的实用工具函数和装饰器。它主要用于简化上下文管理器的创建过程
官方文档:contextlib — Utilities for with-statement contexts — Python 3.11.5 documentation

  1. 创建上下文管理器:
    from contextlib import contextmanager
    
    @contextmanager
    def my_context():
        # 进入上下文前的操作
        setup()
        try:
            yield  # 返回上下文对象
        finally:
            # 离开上下文后的操作
            teardown()
    
    with my_context() as ctx:
        # 在上下文中执行的代码
        do_something()
    
  2. 将没有实现上下文管理器接口的对象转换为上下文管理器:
    from contextlib import closing
    from urllib.request import urlopen
    
    with closing(urlopen('http://www.example.com')) as page:
        for line in page:
            print(line)
    

10. 装饰器

装饰函数,语法糖。

@torch.no_grad()

简单实现可参考python3-装饰器_花_城的博客-CSDN博客_python3 装饰器

11. 常见简单bug(比较复杂的有些我会专门写一篇博文)

  1. Python运行报SyntaxError: Non-UTF-8 code starting with ‘\xe5‘ in file的解决方法_syntaxerror: non-utf-8 code starting with ‘\xe5’ i_秋9的博客-CSDN博客:在Python文件开头加# coding:utf-8
  2. " " 和 " " 两个看起来都像空格,但实际上它们是不同的字符。
    " " 是ASCII字符集中的空格,也被称为普通空格或半角空格。它的Unicode编码是U+0020。
    " " 是CJK字符集中的空格,也被称为全角空格。它的Unicode编码是U+3000。全角空格的宽度是普通空格的两倍,通常用在需要对齐的文字中,特别是在中文、日文和韩文中。
    在Python中,你可以使用ord函数来获取这两个字符的Unicode编码,以此来区分它们。例如:
    print(ord(" "))  # Output: 32
    print(ord(" "))  # Output: 12288
    
    在处理文本数据时,通常需要注意这两种空格可能带来的影响。
  3. SyntaxError: Non-UTF-8 code starting with '\xe5' in file
    解决方案:在Python文件首行添加#coding=utf-89

12. jupyter notebook

The Jupyter Notebook — Jupyter Notebook 6.5.4 documentation

  1. jupyter notebook打开出现Unreadable Notebook: coda_path\btc-master (16.2)\btc_close_2017.ipynb NotJSONError('Notebook does not appear to be JSON: \'\\ufeff{\\n "cells": [\\n {\\n "cell_typ...')问题,解决方法:用json格式化工具将ipynb文件进行格式化(如JSON在线 | JSON解析格式化—SO JSON在线工具格式化后即可)
  2. 如何设置Jupyter Notebook可远程访问:
    设置 jupyter notebook 可远程访问 - Liu-Cheng Xu - CSDN博客
    远程访问jupyter notebook - Echo/ - 博客园
    服务器(CentOS7)配置Jupyter Notebook远程访问 - 水水 - CSDN博客
    如何访问服务器的 Jupyter notebook - 知乎
    云服务centos搭建jupyter notebook并通过外网访问_开发工具_taw19960426的博客-CSDN博客
  3. 在jupyter notebook中,清除输出10
    from IPython.display import clear_output
    
    print('before')
    clear_output()  # 清除输出
    print('after')
    
    输出效果:
    after
    
  4. magic function
    打印行运行时长:%time
    打印cell运行时长:%%time
    打印函数运行时长:%timeit(用法:%timeit function()11

13. colab教程

教程:Google Colab免费GPU使用教程(一)
colab里面更换GPU/CPU会导致会话重启
https://colab.research.google.com/notebooks/welcome.ipynb
https://colab.research.google.com/notebooks/打开文件

14. 其他常用功能库

1. yaml

  1. 一个从老版本转换为新版本时会遇到的问题:TypeError: load() missing 1 required positional argument: 'Loader' in Google Colab
    在这里插入图片描述
    解决方案:将load()改为safe_load()12

2. 进度条

1. tqdm

(官方GitHub项目:tqdm/tqdm: A Fast, Extensible Progress Bar for Python and CLI
使用pip安装:pip install tqdm
简单用法:用from tqdm import tqdm引入,然后在for语句中加到迭代器上,如for i in tqdm(range(10)),然后在运行循环语句的过程中就会出现进度条:
在这里插入图片描述
常用入参:

  1. desc:字符串入参+会出现在进度条前,示例:在这里插入图片描述
2. alive-progress

主要是有一台服务器我tqdm不知为啥显示不了进度条,所以我就改用alive-progress了
alive-progress · PyPI
GitHub - rsalmei/alive-progress: A new kind of Progress Bar, with real-time throughput, ETA, and very cool animations!
使用pip安装:pip install alive-progress

  1. 知道迭代数的情况:
    from alive_progress import alive_bar
    
    with alive_bar(总迭代数) as bar:
    		for sample in 迭代器:
    		操作
    
      			bar()
    
    在这里插入图片描述

3. random库:生成伪随机数

random — Generate pseudo-random numbers — Python 3.11.3 documentation

  1. 设置随机数种子:random.seed(a)
  2. 生成分布的一个样本(数字)
    1. random.random():生成[0.0, 1.0) 范围内的下一个随机浮点数
    2. random.uniform(a, b):生成二数之间的一个随机数。终点 b 可以包括或不包括在该范围内。
    3. gauss(mu=0.0, sigma=1.0):高斯分布/正态分布(Python 3.11之后两个属性才有默认值,在此之前都要)
    4. random.randrange(stop)
      random.randrange(start, stop[, step])
      range(start, stop, step)中随机抽取一个元素,与choice(range(start, stop, step))等价,但并不真的创造一个range对象
  3. 原地打乱序列顺序:random.shuffle(x)

4. copy库:复制对象

copy库官方文档:copy — 浅层 (shallow) 和深层 (deep) 复制操作 — Python 3.11.0 文档

  1. copy.deepcopy(obj):返回对象深度复制后的对象,二者的操作互不影响

5. math库

  1. 开方:math.sqrt(数字)
  2. 检测数字是否是nan:math.isnan(数字)

6. statistics库:数学统计函数

statistics库官方文档:statistics — Mathematical statistics functions — Python 3.11.1 documentation

  1. 求平均值:statistics.mean(obj)

7. SymPy库:科学计算

官方文档:SymPy 1.11 documentation
参考博文:Python科学计算利器——SymPy库 - 简书

8. warnings库

warnings库官方文档:warnings — Warning control — Python 3.11.2 documentation
1. warnings.filterwarnings('ignore')13:直接忽略警告

9. 发邮件

首先搞个SMTP服务的邮箱账号来发邮件。以网易邮箱为例,开启POP3/SMTP/IMAP服务:
在这里插入图片描述
示例代码:

import smtplib
from email.mime.text import MIMEText
from email.utils import formataddr
my_sender='xxxxx@yeah.net' # 发件人邮箱账号
my_pass = 'xxxxx'    # 发件人邮箱密码(当时申请smtp给的口令)
my_user='xxxxx@xx.com'  # 收件人邮箱账号
def mail():
    ret=True
    msg=MIMEText('填写邮件内容','plain','utf-8')
    msg['From']=formataddr(["发件人昵称",my_sender]) # 括号里的对应发件人邮箱昵称、发件人邮箱账号
    msg['To']=formataddr(["收件人昵称",my_user])    # 括号里的对应收件人邮箱昵称、收件人邮箱账号
    msg['Subject']="邮件主题-测试"    # 邮件的主题,也可以说是标题

    server=smtplib.SMTP_SSL("smtp.yeah.net",587)
    server.login(my_sender, my_pass) # 括号中对应的是发件人邮箱账号、邮箱密码
    server.sendmail(my_sender,[my_user,],msg.as_string()) # 括号中对应的是发件人邮箱账号、收件人邮箱账号、发送邮件
    server.quit()# 关闭连接
    return ret
 
ret=mail()

10. 压缩与解压缩文件:zipfile库

zipfile — 使用ZIP存档 — Python 3.11.3 文档

  1. 创建ZipFile对象:zFile=zipfile.ZipFile(zip_file_path,"r")
  2. 提取ZipFile下的所有文件(返回值是文件名),并解压到对应文件夹中:
    在这里插入图片描述
  3. 关闭ZipFile对象:zFile.close()

12. shutil库:高阶文件操作

shutil — 高阶文件操作 — Python 3.11.3 文档
1. shutil.rmtree(path):删除文件夹及其下的所有内容

常用的另一个操作文件的库os可以参考我写的博文:os:与操作系统有关的Python操作

12. cn2an库:在汉字与阿拉伯数字之间进行转换

cn2an官方GitHub项目:Ailln/cn2an: 📦 快速转化「中文数字」和「阿拉伯数字」~ (最新特性:分数,日期、温度等转化)

  1. 将汉字转换为阿拉伯数字:cn2an.cn2an('3.2万','smart') 输出:32000
    1. 第二个入参
      1. 'smart':可以接受中英文与阿拉伯数字混合的形式,但是不接受,和空格等符号

13. webssh

14. pipx:包管理工具(可以在隔离环境下安装包)

pypa/pipx: Install and Run Python Applications in Isolated Environments
pipx · PyPI
Linux平台的安装方式:

python3 -m pip install --user pipx
python3 -m pipx ensurepath

15. chardet:检测bytes或bytearray的编码方式

chardet · PyPI
chardet — chardet 5.0.0 documentation

import chardet
print(chardet.detect(rawdata))

如果rawdata是str格式的话,可能需要写成rawdata.encode()14(这个似乎是Python版本的问题,我用Python 3.6.8时就需要使用这个)

16. 检测字符串的语种

pycld2

基于谷歌CLD2工具(GitHub - CLD2Owners/cld2: Compact Language Detector 2)实现的pycld2(GitHub - aboSamoor/pycld2

pip install pycld2

import pycld2 as cld2
from pprint import pprint

isReliable, textBytesFound, details = cld2.detect(
    "а неправильный формат идентификатора дн назад"
)

print(isReliable)
print(textBytesFound)
pprint(details)

输出:

True
87
(('RUSSIAN', 'ru', 98, 404.0),
 ('Unknown', 'un', 0, 0.0),
 ('Unknown', 'un', 0, 0.0))

另外有另一个基于CLD2实现的cld2-cffi(GitHub - GregBowyer/cld2-cffi: Python bindings to the Compact Language Detector),但是安装不了啊。

langdetect库:检测字符串的语言

langdetect · PyPI

17. 从文本中抽取URL(超文本链接/网址)

  1. urlextract包
    pypi网址:urlextract · PyPI
    官方文档:Welcome to urlextract’s documentation! — urlextract 1.8.0 documentation
    安装方法:pip install urlextract
    用法:
    from urlextract import URLExtract
    
    extractor=URLExtract()
    urls=extractor.find_urls("Text with URLs. Let's have URL janlipovsky.cz as an example.")
    
    结果是一个这样的列表:['janlipovsky.cz']
    这个包的问题在于似乎对中文的处理很糟糕,所以事实上还是建议用下面这个正则表达式:
  2. 使用(ChatGPT帮我写的)正则表达式:
    import re
    url_pattern=re.compile(r'http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+')
    official_sites=re.findall(url_pattern,'ASPLOS会议的官网是https://www.asplos-conference.org/,2023年论文提交截止时间是2022年10月20日。')
    
    得到一个字符串列表,第一个元素就是网址https://www.asplos-conference.org/

18. urllib

从网址中提取域名
from urllib.parse import urlparse
urlparse(an_url_string).netloc
将可读字符串转换为URL
from urllib.parse import quote

decoded_url = "https://github.com/dongrixinyu/JioNLP/wiki/NER-说明文档#user-content-货币金额实体抽取"
encoded_url = quote(decoded_url, safe=':/#-')

print(encoded_url)

safe 参数指定了不应该被编码的字符集。在这种情况下,我们选择保留URL中常见的一些安全字符,如冒号、斜杠、井号和连字符。
输出:https://github.com/dongrixinyu/JioNLP/wiki/NER-%E8%AF%B4%E6%98%8E%E6%96%87%E6%A1%A3#user-content-%E8%B4%A7%E5%B8%81%E9%87%91%E9%A2%9D%E5%AE%9E%E4%BD%93%E6%8A%BD%E5%8F%96

将URL转换为可读字符串
from urllib.parse import unquote

url = "https://github.com/dongrixinyu/JioNLP/wiki/NER-%E8%AF%B4%E6%98%8E%E6%96%87%E6%A1%A3#user-content-%E8%B4%A7%E5%B8%81%E9%87%91%E9%A2%9D%E5%AE%9E%E4%BD%93%E6%8A%BD%E5%8F%96"
decoded_url = unquote(url)

print(decoded_url)

输出:https://github.com/dongrixinyu/JioNLP/wiki/NER-说明文档#user-content-货币金额实体抽取

19. secrets — 生成管理密码的安全随机数 — Python 3.11.3 文档

  1. secrets.token_hex([nbytes=None]):返回十六进制随机文本字符串。字符串有 nbytes 个随机字节,每个字节转换为两个十六进制数码。未提供 nbytes 或为 None 时,则使用合理的默认值。
>>> token_hex(16)  
'f9bf78b9a18ce6d46a0cd2b0b86df9da'

20. 背景任务调度

  1. schedule包:轻量级的定时任务库
    适用场景:有个代码我想要每天早上9点时候运行一遍
    schedule包官方文档:schedule — schedule 1.2.0 documentation
    安装方式:pip install schedule
    示例代码:
import schedule
import time

def job():
    # 这里是你的任务代码
    print("Task is running...")

schedule.every().day.at("09:00").do(job)

while True:
    schedule.run_pending()
    time.sleep(1)
  1. APScheduler包
    APScheduler包官方文档:Advanced Python Scheduler — APScheduler 3.9.1 documentation
    示例代码:
from apscheduler.schedulers.background import BackgroundScheduler

def task():
    # 这里是你要定时执行的任务
    print("Task is running...")

app = Flask(__name__)

if __name__ == "__main__":
    scheduler = BackgroundScheduler()
    scheduler.add_job(func=task, trigger="cron", hour=9)
    scheduler.start()

cron触发器,可以让我们按照Cron风格的时间表达式来定时任务
scheduler.start()启动调度器
3. Celery - Distributed Task Queue — Celery 5.3.0 documentation
4. RQ: Simple job queues for Python

21. base64

将Excel文件编码为base6415

import base64

data = open(excel_path, 'rb').read()
base64_encoded = base64.b64encode(data).decode('UTF-8')

22. html库

  1. 将HTML实体转换为字符串:
    from html import unescape
    
    unescaped_text = unescape(text)
    

23. ftfy库:修复字符编码bug

Home - ftfy: fixes text for you

24. JioNLP包

  1. 从自然语言中抽取时间:请参考我撰写的另一篇博文Python3中对时间的处理(持续更新ing…)
  2. 从自然语言中抽取金额16
    示例代码:
text="张三赔偿李大花人民币车费601,293.11元,工厂费大约一万二千三百四十五元,利息9佰日元,打印费十块钱。"
res = jio.ner.extract_money(text, with_parsing=False)
#[{'text': '601,293.11元', 'offset': [12, 23], 'type': 'money'}, {'text': '大约一万二千三百四十五元', 'offset': [27, 39], 'type': 'money'}, {'text': '9佰日元', 'offset': [42, 46], 'type': 'money'}, {'text': '十块钱', 'offset': [50, 53], 'type': 'money'}]

number_str_list=[jio.parse_money(x["text"]) for x in res]
#[{'num': '601293.11', 'case': '元', 'definition': 'accurate'}, {'num': '12345.00', 'case': '元', 'definition': 'blur'}, {'num': '900.00', 'case': '日元', 'definition': 'accurate'}, {'num': '10.00', 'case': '元', 'definition': 'accurate'}]
#注意这里num的值可能是一个数组

25. difflib:比较序列

difflib — 计算差异的辅助工具 — Python 3.11.5 文档

  1. SequenceMatcher
    可以比较任何可哈希的序列对象
    计算字符串ab的相似度:SequenceMatcher(None, a, b).ratio()(会返回一个介于0和1之间的浮点数,用于描述这两个字符串的相似程度。返回值为 1 表示两个字符串完全相同,而返回值为 0 表示两个字符串没有任何相似之处。)
    在这里插入图片描述

26. signal包

官方文档:signal — Set handlers for asynchronous events — Python 3.11.5 documentation

15. 实现其他小功能

将字符串限制在6000字节以内

这里主要是考虑多种语言的场景,英语反正一个字母就一个字节:

先将字符串编码为字节串,然后再进行长度检查和切片

def limit_byte_length(s, max_bytes):
    # 将字符串编码为字节串
    byte_str = s.encode('utf-8')

    # 如果字节串的长度超过最大字节长度,进行切片
    if len(byte_str) > max_bytes:
        byte_str = byte_str[:max_bytes]

    # 将字节串解码回字符串
    s = byte_str.decode('utf-8', 'ignore')

    return s

# 测试
s = "这是一个测试字符串"
max_bytes = 6000
s = limit_byte_length(s, max_bytes)

如果一个字符的一部分字节被切片掉,解码时会产生错误。为了避免这个问题,我们在解码时使用了'ignore'错误处理选项,这会忽略所有无法解码的字节。
这个函数假设你的字符串是UTF-8编码的。如果你的字符串使用其他编码,你需要相应地修改编码和解码的部分。

16. 本文撰写过程中参考的其他资料

  1. Python3 lower()方法 | 菜鸟教程
  2. Python3 strip()方法 | 菜鸟教程
  3. Python3 错误和异常 | 菜鸟教程
  4. Python3 集合 | 菜鸟教程
  5. Python Set intersection() 方法 | 菜鸟教程
  6. Python打印对象的全部属性_来玩魔王的咚!的技术博客_51CTO博客
  7. Python3 List count()方法 | 菜鸟教程
  8. Python3 find()方法 | 菜鸟教程
  9. python3利用smtplib通过qq邮箱发送邮件_嗨学编程的博客-CSDN博客
  10. Python系列文章-Python字符串修饰符总结 | RongXiang
  11. python 删除文件夹、删除非空文件夹_python删除文件夹_suibianshen2012的博客-CSDN博客
  12. Python中list列表、元组、字典前面加星号是什么意思?_元祖前面加*_努力改掉拖延症的小白的博客-CSDN博客
  13. Python list变量加星号,字典变量前面加星号 - 知乎
  14. 菜鸟教程-Python3函数
  15. python计算两个日期之间的天数、月数相差_python计算日期之间月份差_Charles.zhang的博客-CSDN博客
  16. python 字符串去除中文_python 去除中文_luoganttcc的博客-CSDN博客

  1. Python3 filter() 函数 | 菜鸟教程
    Python中如何从列表中删除None值_python输出none怎么去掉_word_mhg的博客-CSDN博客 ↩︎

  2. Python3 zip() 函数 | 菜鸟教程 ↩︎

  3. Python 3 内置函数 - all()函数_曹逗号的博客-CSDN博客 ↩︎

  4. Python函数独立星号()分隔的命名关键字参数_python 函数传入参数以作为分割_LaoYuanPython的博客-CSDN博客 ↩︎

  5. Python3 enumerate() 函数 | 菜鸟教程 ↩︎

  6. Python3 ord() 函数 | 菜鸟教程 ↩︎

  7. Python3 chr() 函数 | 菜鸟教程 ↩︎

  8. 浅析Python 3 中的with语句_haosen97的博客-CSDN博客_python3 with ↩︎

  9. reqiests_SyntaxError: Non-UTF-8 code starting with ‘\xe5’ in file-CSDN博客
    python报错Non-ASCII character ‘\xe5’ in file的解决方法-CSDN博客 ↩︎

  10. python在jupyter notebook/terminal/console下的输出清空_jupyter lab 清空以下控制台_SL_World的博客-CSDN博客:这篇文章中也介绍了终端清空输出的解决方案,但我不知为啥无法实现 ↩︎

  11. ipython - What is %timeit in Python? - Stack Overflow ↩︎

  12. python - TypeError: load() missing 1 required positional argument: ‘Loader’ in Google Colab - Stack Overflow ↩︎

  13. warnings.filterwarnings(“ignore”)代码解析_我是管小亮的博客-CSDN博客_filterwarnings ↩︎

  14. python - I use chardet to test encode , but i got error - Stack Overflow ↩︎

  15. python - How to encode an Excel File to base64 - Stack Overflow ↩︎

  16. 官方教程参考这两篇:https://github.com/dongrixinyu/JioNLP/wiki/NER-说明文档#user-content-货币金额实体抽取
    https://github.com/dongrixinyu/JioNLP/wiki/正则抽取与解析-说明文档#user-content-货币金额解析 ↩︎

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值