difflib与顺序相关的简单介绍

本文目录一览:

Python编程常用技巧

清理用户输入

对输入的的值进行清理处理,是常见的程序要求。比如要做大小写转化、要验证输入字符的注入,通常可以通过写正则用Regex来做专项任务。但是对于复杂的情况,可以用一些技巧,比如下面:

user_input = “This\nstring has\tsome whitespaces…\r\n”

character_map = {

ord(‘\n’) : ‘ ‘,

ord(‘\t’) : ‘ ‘,

ord(‘\r’) : None

}

在此示例中,可以看到空格字符”\n”和”\t”都被替换为空格,而 “\r”被删除。

这是一个简单的示例,我们还可以使用unicodedata包和combinin()函数来生成大的映射表,以生成映射来替换字符串。

提示用户输入

命令行工具或脚本需要输入用户名和密码才能操作。要用这个功能,一个很有用的技巧是使用getpass模块:

import getpass

user = getpass.getuser()

password = getpass.getpass()

这三行代码就可以让我们优雅的交互提醒用户输入输入密码并捕获当前的系统用户和输入的密码,而且输入密码时候会自动屏蔽显示,以防止被人窃取。

查找字符串频率

如果需要使用查找类似于某些输入字符串的单词,可以使用difflib来实现:

import difflib

difflib.get_close_matches(‘appel’, [‘ape’, ‘apple’, ‘peach’, ‘puppy’], n=2)

# 返回[‘apple’, ‘ape’]

difflib.get_close_matches会查找相似度最匹配的字串。本例中,第一个参数与第二个参数匹配。提供可选参数n,该参数指定要返回的最大匹配数,以及参数cutoff(默认值为0.6)设置为thr确定匹配字符串的分数。

关于Python编程常用技巧,青藤小编就和您分享到这里了。如果您对python编程有浓厚的兴趣,希望这篇文章可以为您提供帮助。如果您还想了解更多关于python编程的技巧及素材等内容,可以点击本站的其他文章进行学习。

python中是否有用于计算两个字符串相似度的函数

linux环境下,没有首先安装python_Levenshtein,用法如下:

重点介绍几个该包中的几个计算字串相似度的几个函数实现。

1. Levenshtein.hamming(str1, str2)

计算汉明距离。要求str1和str2必须长度一致。是描述两个等长字串之间对应位置上不同字符的个数。如

2. Levenshtein.distance(str1, str2)

计算编辑距离(也成Levenshtein距离)。是描述由一个字串转化成另一个字串最少的操作次数,在其中的操作包括插入、删除、替换。如

算法实现 参考动态规划整理:。

3. Levenshtein.ratio(str1, str2)

计算莱文斯坦比。计算公式 r = (sum – ldist) / sum, 其中sum是指str1 和 str2 字串的长度总和,ldist是类编辑距离

注意:这里的类编辑距离不是2中所说的编辑距离,2中三种操作中每个操作+1,而在此处,删除、插入依然+1,但是替换+2

这样设计的目的:ratio(‘a’, ‘c’),sum=2,按2中计算为(2-1)/2 = 0.5,’a’,’c’没有重合,显然不合算,但是替换操作+2,就可以解决这个问题。

4. Levenshtein.jaro(s1, s2)

计算jaro距离,

其中的m为s1, s2的匹配长度,当某位置的认为匹配 当该位置字符相同,或者在不超过

t是调换次数的一半

5. Levenshtein.jaro_winkler(s1, s2)

计算Jaro–Winkler距离

python difflib比较,生成html发现错位比较,导致差异过多?

github搜diff有很多工具,选点赞多的测试

不要局限python的,可以用命令行掉三方工具也行

基于Appium实现深度UI遍历工具(三)

系列文章:

基于Appium实现深度UI遍历工具

基于Appium实现深度UI遍历工具(二)

分享了需求,功能设计,流程,工具选择。那么这次来分享下。整体的框架模块以及开发需要的类包。

第一、整体模块

对功能有了一些设计,接下来,就是对于整体模块的拆分。再去分享实际项目的工程搭建。

1.config

配置模块,针对UI遍历中,所有的配置相关的文件进行管理。

2.case模块

case相关,我们这里把UI遍历作为一个case 来实现。可以创建一个uicrawler.py,控制遍历相关的。

3.common包

里面处理通用的功能,adb封装,log封装,webdriver封装,xpath封装,通用配置的封装,测试报告模块等。

4.testlog

处理里面所有的log,包括脚本的过程的中log,设备执行logcat相关的日志。方便后续的日志分析和问题的定位。

5.testreport

存储测试报告的模块。

6.run.py

执行模块。主要的入口。

第二、开发需要类包

第三方依赖包

1.PyYAML

解析配置文件

2.selenium

用做隐形等待,查找元素

3.lxml

页面的UI解析,用于分析解决xpath,所有的定位的方式,都采用xpath的来进行定位。

4.opencv-python

文件解析

5.Pillow

图片处理,我们在做点击操作的时候,去记录下点击的位置。

6.logbook

log日志处理,记录测试日志

7.Appium-Python-Client

appium的python库。这里会做一些简单的封装。

python自身的库

1.random

随机模块,处理一些随机的,在文本输入的时候,我们去随机地选取一些配置的文件

2.platform

获取一些系统

3.os

文件处理

4.difflib

文本对比

5.datetime

时间处理

6.shutil

文件处理的高级模块

7.hashlib

用于产生一个固定的字符串,其实是一个加密的模块。

大概列举了一些用到的库,在后面的代码编写的过程中,如果遇到需要使用其他类库,还会增加。

Python 常用的标准库以及第三方库有哪些

Python常用库大全,看看有没有你需要的。

环境管理

管理 Python 版本和环境的工具

p – 非常简单的交互式 python 版本管理工具。

pyenv – 简单的 Python 版本管理工具。

Vex – 可以在虚拟环境中执行命令。

virtualenv – 创建独立 Python 环境的工具。

virtualenvwrapper- virtualenv 的一组扩展。

包管理

管理包和依赖的工具。

pip – Python 包和依赖关系管理工具。

pip-tools – 保证 Python 包依赖关系更新的一组工具。

conda – 跨平台,Python 二进制包管理工具。

Curdling – 管理 Python 包的命令行工具。

wheel – Python 分发的新标准,意在取代 eggs。

包仓库

本地 PyPI 仓库服务和代理。

warehouse – 下一代 PyPI。

Warehousebandersnatch – PyPA 提供的 PyPI 镜像工具。

devpi – PyPI 服务和打包/测试/分发工具。

localshop – 本地 PyPI 服务(自定义包并且自动对 PyPI 镜像)。

分发

打包为可执行文件以便分发。

PyInstaller – 将 Python 程序转换成独立的执行文件(跨平台)。

dh-virtualenv – 构建并将 virtualenv 虚拟环境作为一个 Debian 包来发布。

Nuitka – 将脚本、模块、包编译成可执行文件或扩展模块。

py2app – 将 Python 脚本变为独立软件包(Mac OS X)。

py2exe – 将 Python 脚本变为独立软件包(Windows)。

pynsist – 一个用来创建 Windows 安装程序的工具,可以在安装程序中打包 Python本身。

构建工具

将源码编译成软件。

buildout – 一个构建系统,从多个组件来创建,组装和部署应用。

BitBake – 针对嵌入式 Linux 的类似 make 的构建工具。

fabricate – 对任何语言自动找到依赖关系的构建工具。

PlatformIO – 多平台命令行构建工具。

PyBuilder – 纯 Python 实现的持续化构建工具。

SCons – 软件构建工具。

交互式解析器

交互式 Python 解析器。

IPython – 功能丰富的工具,非常有效的使用交互式 Python。

bpython- 界面丰富的 Python 解析器。

ptpython – 高级交互式Python解析器, 构建于python-prompt-toolkit 之上。

文件

文件管理和 MIME(多用途的网际邮件扩充协议)类型检测。

imghdr – (Python 标准库)检测图片类型。

mimetypes – (Python 标准库)将文件名映射为 MIME 类型。

path.py – 对 os.path 进行封装的模块。

pathlib – (Python3.4+ 标准库)跨平台的、面向对象的路径操作库。

python-magic- 文件类型检测的第三方库 libmagic 的 Python 接口。

Unipath- 用面向对象的方式操作文件和目录

watchdog – 管理文件系统事件的 API 和 shell 工具

日期和时间

操作日期和时间的类库。

arrow- 更好的 Python 日期时间操作类库。

Chronyk – Python 3 的类库,用于解析手写格式的时间和日期。

dateutil – Python datetime 模块的扩展。

delorean- 解决 Python 中有关日期处理的棘手问题的库。

moment – 一个用来处理时间和日期的Python库。灵感来自于Moment.js。

PyTime – 一个简单易用的Python模块,用于通过字符串来操作日期/时间。

pytz – 现代以及历史版本的世界时区定义。将时区数据库引入Python。

when.py – 提供用户友好的函数来帮助用户进行常用的日期和时间操作。

文本处理

用于解析和操作文本的库。

通用

chardet – 字符编码检测器,兼容 Python2 和 Python3。

difflib – (Python 标准库)帮助我们进行差异化比较。

ftfy – 让Unicode文本更完整更连贯。

fuzzywuzzy – 模糊字符串匹配。

Levenshtein – 快速计算编辑距离以及字符串的相似度。

pangu.py – 在中日韩语字符和数字字母之间添加空格。

pyfiglet -figlet 的 Python实现。

shortuuid – 一个生成器库,用以生成简洁的,明白的,URL 安全的 UUID。

unidecode – Unicode 文本的 ASCII 转换形式 。

uniout – 打印可读的字符,而不是转义的字符串。

xpinyin – 一个用于把汉字转换为拼音的库。

python 有没有一个模块可以比较两个文本文件内容差异的?而且可以只输出差异的部分?

difflib是python提供的比较序列(string list)差异的模块。实现了三个类:

1SequenceMatcher 任意类型序列的比较 (可以比较字符串)

2Differ 对字符串进行比较

3HtmlDiff 将比较结果输出为html格式.

建议你使用SequenceMatcher比较器,给你个例子吧。

SequenceMatcher实例:

import difflib

from pprint import pprint

a = ‘pythonclub.org is wonderful’

b = ‘Pythonclub.org also wonderful’

s = difflib.SequenceMatcher(None, a, b)

print “s.get_matching_blocks():”

pprint(s.get_matching_blocks())

print

print “s.get_opcodes():”

for tag, i1, i2, j1, j2 in s.get_opcodes():

    print (“%7s a[%d:%d] (%s) b[%d:%d] (%s)” %  (tag, i1, i2, a[i1:i2], j1, j2, b[j1:j2]))

      

输出为:

s.get_matching_blocks():

[(1, 1, 14), (16, 17, 1), (17, 19, 10), (27, 29, 0)]

s.get_opcodes():

replace a[0:1] (p) b[0:1] (P)

  equal a[1:15] (ythonclub.org ) b[1:15] (ythonclub.org )

replace a[15:16] (i) b[15:17] (al)

  equal a[16:17] (s) b[17:18] (s)

 insert a[17:17] () b[18:19] (o)

  equal a[17:27] ( wonderful) b[19:29] ( wonderful)   

SequeceMatcher(None,a,b)创建序列比较对象,将以a作为参考标准进行

Sequecematcher(None,b,a)创建序列比较对象,将以b作为参考标准进行

a,b表示待比较的两个序列,生成序列比较对象后,调用该对象的get_opcodes()方法,将返回一个元组(tag,i1,i2,j1,j2).tag表示序列分片的比较结果.i1,i2表示序列a的索引,j1,j2表示序列b的索引.

get_opcodes()返回元组(tag,i1,i2,j1,j2)的含义

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/155395.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-11-17 02:39
下一篇 2024-11-17 02:39

相关推荐

  • Python简单数学计算

    本文将从多个方面介绍Python的简单数学计算,包括基础运算符、函数、库以及实际应用场景。 一、基础运算符 Python提供了基础的算术运算符,包括加(+)、减(-)、乘(*)、除…

    编程 2025-04-29
  • Python满天星代码:让编程变得更加简单

    本文将从多个方面详细阐述Python满天星代码,为大家介绍它的优点以及如何在编程中使用。无论是刚刚接触编程还是资深程序员,都能从中获得一定的收获。 一、简介 Python满天星代码…

    编程 2025-04-29
  • Python海龟代码简单画图

    本文将介绍如何使用Python的海龟库进行简单画图,并提供相关示例代码。 一、基础用法 使用Python的海龟库,我们可以控制一个小海龟在窗口中移动,并利用它的“画笔”在窗口中绘制…

    编程 2025-04-29
  • Python樱花树代码简单

    本文将对Python樱花树代码进行详细的阐述和讲解,帮助读者更好地理解该代码的实现方法。 一、简介 樱花树是一种图形效果,它的实现方法比较简单。Python中可以通过turtle这…

    编程 2025-04-28
  • Python大神作品:让编程变得更加简单

    Python作为一种高级的解释性编程语言,一直被广泛地运用于各个领域,从Web开发、游戏开发到人工智能,Python都扮演着重要的角色。Python的代码简洁明了,易于阅读和维护,…

    编程 2025-04-28
  • 用Python实现简单爬虫程序

    在当今时代,互联网上的信息量是爆炸式增长的,其中很多信息可以被利用。对于数据分析、数据挖掘或者其他一些需要大量数据的任务,我们可以使用爬虫技术从各个网站获取需要的信息。而Pytho…

    编程 2025-04-28
  • 如何制作一个简单的换装游戏

    本文将从以下几个方面,为大家介绍如何制作一个简单的换装游戏: 1. 游戏需求和界面设计 2. 使用HTML、CSS和JavaScript开发游戏 3. 实现游戏的基本功能:拖拽交互…

    编程 2025-04-27
  • Guava Limiter——限流器的简单易用

    本文将从多个维度对Guava Limiter进行详细阐述,介绍其定义、使用方法、工作原理和案例应用等方面,并给出完整的代码示例,希望能够帮助读者更好地了解和使用该库。 一、定义 G…

    编程 2025-04-27
  • Python set去重保留原顺序

    当一个列表中出现重复的元素时,为了去除这些重复元素可以使用Python提供的集合(set)数据结构,集合可以去除元素的重复出现。然而,这样会导致原有的元素顺序混乱,这时,需要使用一…

    编程 2025-04-27
  • 2的32次方-1:一个看似简单却又复杂的数字

    对于计算机领域的人来说,2的32次方-1(也就是十进制下的4294967295)这个数字并不陌生。它经常被用来表示IPv4地址或者无符号32位整数的最大值。但实际上,这个数字却包含…

    编程 2025-04-27

发表回复

登录后才能评论