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/zh-tw/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

發表回復

登錄後才能評論