溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

python如何處理字符串

發(fā)布時(shí)間:2022-03-16 13:50:05 來源:億速云 閱讀:141 作者:小新 欄目:開發(fā)技術(shù)

這篇文章主要為大家展示了“python如何處理字符串”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“python如何處理字符串”這篇文章吧。

字符串處理技巧

1. 清理用戶輸入

對輸入的的值進(jìn)行清理處理,是常見的程序要求。比如要做大小寫轉(zhuǎn)化、要驗(yàn)證輸入字符的注入,通??梢酝ㄟ^寫正則用Regex來做專項(xiàng)任務(wù)。但是對于復(fù)雜的情況,可以用一些技巧,比如下面:

user_input = "This\nstring has\tsome whitespaces...\r\n"   character_map = { ord('\n') : ' ', ord('\t') : ' ', ord('\r') : None }

在此示例中,可以看到空格字符"\n"和"\t"都被替換為空格,而 "\r"被刪除。

這是一個(gè)簡單的示例,我們還可以使用unicodedata包和combinin()函數(shù)來生成大的映射表,以生成映射來替換字符串。

2. 提示用戶輸入

命令行工具或腳本需要輸入用戶名和密碼才能操作。要用這個(gè)功能,一個(gè)很有用的技巧是使用getpass模塊:

import getpass  user = getpass.getuser() password = getpass.getpass()

這三行代碼就可以讓我們優(yōu)雅的交互提醒用戶輸入輸入密碼并捕獲當(dāng)前的系統(tǒng)用戶和輸入的密碼,而且輸入密碼時(shí)候會(huì)自動(dòng)屏蔽顯示,以防止被人竊取。

3. 查找字符串頻率

如果需要使用查找類似于某些輸入字符串的單詞,可以使用difflib來實(shí)現(xiàn):

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

# 返回['apple', 'ape']

difflib.get_close_matches會(huì)查找相似度最匹配的字串。本例中,第一個(gè)參數(shù)與第二個(gè)參數(shù)匹配。提供可選參數(shù)n,該參數(shù)指定要返回的最大匹配數(shù),以及參數(shù)cutoff(默認(rèn)值為0.6)設(shè)置為thr確定匹配字符串的分?jǐn)?shù)。

4. 多行字符串

Python中可以使用反斜杠:

In [20]: multistr = " select * from test \ ...: where id < 5" In [21]: multistr Out[21]: ' select * from test where id < 5'

還可以使用三引號:

In [23]: multistr ="""select * from test ...: where id < 5""" In [24]: multistr Out[24]: 'select * test where id < 5'

上面方法共有的問題是缺少合適的縮進(jìn),如果我們嘗試縮進(jìn)會(huì)在字符串中插入空格。所以最后的解決方案是將字符串分為多行并且將整個(gè)字符串包含在括號中:

In [25]: multistr = ("select * from multi_row " ...: "where row_id < 5 " ...: "order by age") In [26]: multistr Out[26]: 'select * from multi_row where row_id < 5 order by age'

5. 處理IP地址

日常常用的一個(gè)是驗(yàn)證和匹配IP地址,這個(gè)功能有個(gè)專門的模塊ipaddress可以來處理。比如我們要用IP網(wǎng)段(CIDR用IP和掩碼位)生成一個(gè)IP地址列表:

import ipaddress net = ipaddress.ip_network('192.168.1.0/27')

結(jié)果:

#192.168.1.0 #192.168.1.1 #192.168.1.2 #192.168.1.3 #...

另一個(gè)不錯(cuò)的功能IP地址是否在IP段的驗(yàn)證:

ip = ipaddress.ip_address("192.168.1.2") ip in net # True   ip = ipaddress.ip_address("192.168.1. 253") ip in net # False

ip地址轉(zhuǎn)字符串、整數(shù)值的互轉(zhuǎn):

>>> str(ipaddress.IPv4Address('192.168.0.1')) '192.168.0.1' >>> int(ipaddress.IPv4Address('192.168.0.1')) 3232235521 >>> str(ipaddress.IPv6Address('::1')) '::1' >>> int(ipaddress.IPv6Address('::1')) 1

注意ipaddress還支持很多其他的功能,比如支持ipv4和ipv6等,

以上是“python如何處理字符串”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI