python刪除字符串中指定字符的方法
最近開始學(xué)機(jī)器學(xué)習(xí),學(xué)習(xí)分析垃圾郵件,其中有一部分是要求去除一段字符中的標(biāo)點符號,查了一下,網(wǎng)上的大多很復(fù)雜例如這樣
import re
temp = "司法局讓我和戶 1 5. 8 0. ?。??? 客戶維護(hù)戶外"
temp = temp.decode("utf8")
string = re.sub("[\s+\.\!\/_,$%^*(+\"\']+|[+——!,。?、~@#¥%……&*()]+".decode("utf8"), "".decode("utf8"),temp)
print string
或者是這樣的
'''引入string模塊'''
import string
'''使用標(biāo)點符號常量'''
string.punctuation
text = "*/@》--【】--12()測試*()"
'''去除字符串中所有的字符,可增加自定義字符'''
def strclear(text,newsign=''):
import string # 引入string模塊
signtext = string.punctuation + newsign # 引入英文符號常量,可附加自定義字符,默認(rèn)為空
signrepl = '@'*len(signtext) # 引入符號列表長度的替換字符
signtable = str.maketrans(signtext,signrepl) # 生成替換字符表
return text.translate(signtable).replace('@','') # 最后將替換字符替換為空即可
strclear(text,'》【】')
我一開始用的后面的這個,著實是有點暴力,于是找了查了一下原文檔,發(fā)現(xiàn)python3中完全有更好的方法去實現(xiàn)這樣的功能(似乎是新更新的?不太清楚,我的是python最新版本3.6.6)
和上面的方法一樣是利用的是str的translate()和maketrans()
translate()自然不用說這里的重點是maketrans(),先放上官方的文檔
static str.maketrans(x[, y[, z]]) This static method returns a translation table usable for str.translate(). If there is only one argument, it must be a dictionary mapping Unicode ordinals (integers) or characters (strings of length 1) to Unicode ordinals, strings (of arbitrary lengths) or None. Character keys will then be converted to ordinals. If there are two arguments, they must be strings of equal length, and in the resulting dictionary, each character in x will be mapped to the character at the same position in y. If there is a third argument, it must be a string, whose characters will be mapped to None in the result.
可以看出maketrans是可以放三個參數(shù)的(以前一直以為只有兩個....)
前兩個參數(shù)是需要一一對應(yīng)進(jìn)行替換,需要字符串長度相同
第三個參數(shù)是直接替換為None
這里就直接上代碼了
import string
i = 'Hello, how are you!'
i.translate(str.maketrans('', '', string.punctuation))
>>>'Hello how are you'
i = 'hello world i am li'
i.translate(str.maketrans('','','l'))
>>>'heo word i am i'
這里的string.punctuation 是python內(nèi)置的標(biāo)點符號的合集
既然看到了就總結(jié)下
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
python 多進(jìn)程和協(xié)程配合使用寫入數(shù)據(jù)
這篇文章主要介紹了python 多進(jìn)程和協(xié)程配合使用寫入數(shù)據(jù),幫助大家利用python高效辦公,感興趣的朋友可以了解下2020-10-10
基于Flask實現(xiàn)的Windows事件ID查詢系統(tǒng)
Windows操作系統(tǒng)的事件日志系統(tǒng)記錄了數(shù)百種不同的事件ID,每個ID對應(yīng)特定的系統(tǒng)事件,本文介紹如何構(gòu)建一個基于Web的事件ID查詢系統(tǒng),文章通過代碼示例介紹的非常詳細(xì),需要的朋友可以參考下2025-04-04
修復(fù)CentOS7升級Python到3.6版本后yum不能正確使用的解決方法
這篇文章主要介紹了修復(fù)CentOS7升級Python到3.6版本后yum不能使用的問題,本文給大家?guī)砹私鉀Q方法,需要的朋友可以參考下2018-01-01
Python操作SQLite數(shù)據(jù)庫過程解析
這篇文章主要介紹了Python操作SQLite數(shù)據(jù)庫過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-09-09
詳解Python靜態(tài)網(wǎng)頁爬取獲取高清壁紙
這篇文章主要介紹了Python爬取高清壁紙,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04
教你怎么用PyCharm為同一服務(wù)器配置多個python解釋器
當(dāng)我們在服務(wù)器上創(chuàng)建了多個虛擬環(huán)境時,也可以在 PyCharm 中配置這些虛擬環(huán)境,方便不同的項目使用不同的環(huán)境,然而按照網(wǎng)上教程添加多個python解釋器后,PyCharm會自動幫我們創(chuàng)建多個重復(fù)的服務(wù)器,本文主要給出該問題的解決方法,同時也對添加解釋器做一個詳細(xì)的講解2021-05-05

