本文目錄一覽:
- 1、Python編程常用技巧
- 2、python中是否有用於計算兩個字符串相似度的函數
- 3、python difflib比較,生成html發現錯位比較,導致差異過多?
- 4、基於Appium實現深度UI遍歷工具(三)
- 5、Python 常用的標準庫以及第三方庫有哪些
- 6、python 有沒有一個模塊可以比較兩個文本文件內容差異的?而且可以只輸出差異的部分?
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 “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-hant/n/155395.html