猿人学第七题-动态字体-随风漂移

前言:该题主要是考对fontTools.ttLib.TTFont的操作,另外就是对字典互相映射的操作

一、woff文件存储

from fontTools.ttLib import TTFont #pip install fontTools
def save_woff(response):woff = response['woff']woff_file = base64.b64decode(woff.encode())with open('aim.woff', 'wb') as f:f.write(woff_file)

二、可视化woff文件

1.首先要把woff文件存成xml格式

from fontTools.ttLib import TTFont# 加载字体文件:font = TTFont('ami.woff')# 保存为xml文件:font.saveXML('local_fonts.xml')

2.利用网站查看

Iconfont Previewiconfont preview for web, Momo's Blog, LuckyMomoicon-default.png?t=N7T8https://blog.luckly-mjw.cn/tool-show/iconfont-preview/index.html

        通过这两步可以建立初始化的name与num列表

三、抓取一页建立woff中flag与数字之间的关系

1.利用可视化网站手动输出woff中name与数字的关系

r_map = {'unic543': 0, 'unib928': 1, 'unic193': 2, 'unib958': 3, 'unia257': 4, 'unic829': 5, 'unib716': 6, 'unic182': 7,'unic387': 8, 'unib718': 9}  # 数字映射字典

2.输出name与flag的关系

def base_font_map(woff):"""构造基本on数组映射模板"""ttobj = TTFont(woff)tt_names = ttobj.getGlyphNames()[1:]  # 获取所有name值cmap = {}for i in tt_names:cmap[tuple(ttobj['glyf'][i].flags)] =  i # 构造基本映射on数组模板return cmap
print(base_font_map('aim.woff'))

3.建立flag(on)与数字的关系

def on_num(on_name,name_num):onnum={}for key,value in on_name.items():onnum[key]=name_num[value]return onnum

四、处理一页response.data数据

def page_data(data,page_name_num): #data=每一页解析的data数据,page_name_num=每一页解析出的name与num的对应关系nums=[]for d_v in data:name_list=d_v['value'].replace('&#x','uni').split(' ')if name_list[-1]=='':name_list.pop()point=''for name in name_list:point+=str(page_name_num[name])nums.append(point)return nums

五、处理一页woff值中name与num的对应关系

def name_num(onnum,nameon):namenum={}for key,value in nameon.items():namenum[key]=onnum[value]return namenum

六、返回一页的point点

def page_point(page):url = f"https://match.yuanrenxue.cn/api/match/7?page={page}"response = requests.get(url, headers=headers, cookies=cookies).json()data = response['data']woff = response['woff']save_woff(woff, page)nameon = base_font_map(f'{page}.woff')namenum = name_num(onnum, nameon)page_point_list = page_data(data, namenum)return page_point_list

七、获取全部数据

def main(name_list):point_list = []for page in range(1, 6):point_list.extend(page_point(page))print(point_list)   print(max(point_list))print(name_list[point_list.index(max(point_list)) + 1])

最后有一点网页里名字的索引是从1开始的,所以point的最大值索引要+1才是名字的索引。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/6808.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

.排序总讲.

在这里赘叙一下我对y总前四节所讲排序的分治思想以及递归的深度理解。 就以788.逆序对 这一题来讲(我认为这一题对于分治和递归的思想体现的淋淋尽致)。 题目: 给定一个长度为 n𝑛 的整数数列,请你计算数列中的逆序对…

Linux的软件包管理器-yum

文章目录 软件包的概念yum源的配置的原因yum的使用查看软件包安装软件卸载软件 软件包的概念 软件包(SoftWare Package)是指具有特定的功能,用来完成特定任务的一个程序或一组程序。可分为应用软件包和系统软件包两大类 在Linux系统中,下载安装软件的方式…

视频下载器 UC网盘

老王导航 - 复杂问题找老王,简单问题百度搜 神器啊

保研面试408复习 2——操作系统、计网

文章目录 1、操作系统一、进程、线程的概念以及区别?二、进程间的通信方式? 2、计算机网络一、香农准则二、协议的三要素1. 语法2. 语义3. 时序 标记文字记忆,加粗文字注意,普通文字理解。 1、操作系统 一、进程、线程的概念以及…

团队经理口才训练教案(3篇)

团队经理口才训练教案(3篇) **篇:基础口才训练 一、教学目标 让团队经理了解口才在团队管理中的重要性。 教授基础口才技巧,如发音、语速、语调等。 二、教学内容 口才的重要性 强调团队经理的口才能力对团队凝聚力、沟通…

牛客NC383 主持人调度(一)【简单 排序 Java/Go/C++】

题目 题目链接: https://www.nowcoder.com/practice/e160b104354649b69600803184094adb 思路 直接看代码,不难Java代码 import java.util.*;public class Solution {/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返…

Android Binder机制

一.简介 Binder是什么? Android系统中,涉及到多进程间的通信底层都是依赖于Binder IPC机制。 例如当进程A中的Activity要向进程B中的Service通信,这便需要依赖于Binder IPC。不仅于 此,整个Android系统架构中,大量采…

BI不等同数据分析,别搞错了!

✅作者简介:《数据运营:数据分析模型撬动新零售实战》作者、《数据实践之美》作者、数据科技公司创始人、多次参加国家级大数据行业标准研讨及制定、高端企培合作讲师。 🌸公众号:风姑娘的数字视角,免费分享数据应用相…

小红的循环移位

题目描述:小红拿到了一个数字串,她每次操作可以使得其向左循环移动一位。将串 ss0 s1...sn−1s ​ 向左循环移动一位,将得到串s1...sn−1s0。小红想知道,使得该数字串变成4的倍数,需要最少操作多少次?&…

步态识别论文(6)GaitDAN: Cross-view Gait Recognition via Adversarial Domain Adaptation

摘要: 视角变化导致步态外观存在显着差异。因此,识别跨视图场景中的步态是非常具有挑战性的。最近的方法要么在进行识别之前将步态从原始视图转换为目标视图,要么通过蛮力学习或解耦学习提取与相机视图无关的步态特征。然而,这些方法有许多约…

2010NOIP普及组真题 2. 接水问题

线上OJ: 一本通:http://ybt.ssoier.cn:8088/problem_show.php?pid1950 解法一、朴素模拟 核心思想: 朴素模拟: 1、先给每个b[i]水龙头分配一个人a[i],b[i] 表示水龙头的剩余时间。同时标记该水龙头为 used 使用中 2…

FFmpeg———encode_video(学习)

目录 前言源码函数最终效果 前言 encode_video:实现了对图片使用指定编码进行编码,生成可播放的视频流,编译时出现了一些错误,做了一些调整。 基本流程: 1、获取指定的编码器 2、编码器内存申请 3、编码器上下文内容参数设置 4、…

政安晨:【Keras机器学习示例演绎】(三十五)—— 使用 LayerScale 的类注意图像变换器

目录 简介 导入 层刻度层 随机深度层 类注意力 会说话的头注意力 前馈网络 其他模块 拼凑碎片:CaiT 模型 定义模型配置 模型实例化 加载预训练模型 推理工具 加载图像 获取预测 关注层可视化 结论 政安晨的个人主页:政安晨 欢迎 &#…

计算机专业就业前景以及工资待遇水平怎么样

计算机专业毕业生的就业前景不错的,计算机专业人才的需求量大,各行各业都需要这类人才来进行软件开发、数据分析、网络安全管理、系统维护等工,工资待遇水平较高,以下是上大学网(www.sdaxue.com)整理的计算机专业就业前…

SMB协议之-那些隐藏/非隐藏共享share

在前面的文章中,介绍了SMB协议相关的内容,详见我的专栏《网络攻防协议实战分析》,连接这里。在SMB协议中往往会使用 tree connect命令连接到对应的远程共享地址。如果你经常接触到SMB协议,相信你对于ADMIN$ ,IPC$ ,C$ 等多种共享一…

质因数分解(cpp实现)--一种快速求得一个数有多少个因子的黑魔法

前言 最近机试没少吃不会质因数分解的亏,用传统的求得因子个数只能过一点点…(ex, 20%) 质因数分解后,可以将因子问题转化为 集合的组合问题,因此会很快,目测是 l o g n log n logn (n是该整数的值)。 传统解法 假设输入整数的…

动态规划 ------ 背包问题

文章目录 1. 01 背包问题1.二维解决2. 一维优化 2. 完全背包问题1.暴力3 for.2. 二维优化3. 一维优化 3. 多重背包问题Ⅰ.1. 二维解决2. 一维优化 4. 多重背包问题Ⅱ5. 混合背包问题6. 二维费用背包问题7. 分组背包问题 背包问题是动态规划中非常典型的一些题,本篇文…

某站戴师兄——Excel学习笔记

1、拿到源数据第一件事——备份工作表,隐藏 Ctrlshift键L打开筛选 UV (Unique visitor)去重 是指通过互联网访问、浏览这个网页的自然人。访问网站的一台电脑客户端为一个访客。00:00-24:00内相同的客户端只被计算一次。一天内同个访客多次访问仅计算一个UV。 PV …

进程与线程(进程)

进程: 概念:进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位 PID:当进程被创建时,操作系统会为该进程分配一个唯一的、不重复的“身份证号” 组成: PCB(进程控制块)&#…

芋道源码的Springboot 项目打包,配置和依赖包分开

Springboot 项目,把依赖包和开发的应用都打在一个jar 里很简单,但有个问题是,修改点东西就要再次全量更新。 这里介绍如何用assembly 来实现不打依赖包。 1、 在主模块中,需要引入 assembly.xml配置: src/main/asse…