日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python替换所有标点符号 正则_python 把标点符号替换为空

發(fā)布時間:2023/12/10 python 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python替换所有标点符号 正则_python 把标点符号替换为空 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Python str.replace(old, new[, max]) 方法把字符串str中的 old(舊字符串) 替換成 new(新字符串),如果指定第三個參數(shù)max,則替換不超過 max 次。

如果非要用replace()函數(shù)來實現(xiàn)要這樣寫:

import string

m =l

forc instring.punctuation:

m =m.replace(c,")

更簡便的方法是用translate(),代碼如下:

importstring

m =l.translate(None, string.punctuation)

中文文本中可能出現(xiàn)的標點符號來源比較復雜,通過匹配等手段對他們處理的時候需要格外小心,防止遺漏,下面小編帶來了Python處理中文標點符號大集合,感興趣的朋友跟隨腳本之家小編一起看看吧 。中文文本中可能出現(xiàn)的標點符號來源比較復雜,通過匹配等手段對他們處理的時候需要格外小心,防止遺漏。以下為在下處理中文標點的時候采用的兩種方法:

中文標點集合比較常見標點有這些:

!?。"#$%&'()*+,-/:;<=>@[\]^_`{|}~⦅⦆「」、、〃》「」『』【】〔〕〖〗?????〝〞????–—‘'?“”??…?﹏.

調(diào)用zhon包的zhon.hanzi.punctuation函數(shù)即可得到這些中文標點。

如果想用英文的標點,則可調(diào)用string包的string.punctuation函數(shù)可得到:

!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~

因此,比如需要將所有標點符號去除,可以進行以下操作:

>>> importre

>>> fromzhon.hanzo importpunctuation

>>> line ="測試。。去除標點。。"

>>> printre.sub("[{}]+".format(punctuation), "", line.decode("utf-8")) # 需要將str轉(zhuǎn)換為unicode

當然,如果想去除重復的符號而只保留一個,那么可以用\1指明:比如

>>> re.sub(ur"([{}])+".format(punctuation), "\1", line.decode("utf-8"))

你也可以手工指定這些標點符號

punctuation ="""!?。"#$%&'()*+-/:;<=>@[\]^_`{|}~⦅⦆「」、、〃》「」『』【】〔〕〖〗?????〝〞????–—‘'?“”??…?﹏"""

re_punctuation ="[{}]+".format(punctuation)

line =re.sub(re_punctuation, "", line)

可以通過直接指定unicode碼范圍的辦法來strip,比如:

去除所有半角全角符號,只留字母、數(shù)字、中文

def remove_punctuation(line):

rule =re.compile(ur"[^a-zA-Z0-9\u4e00-\u9fa5]")

line =rule.sub('',line)

return line

漢字的范圍為”\u4e00-\u9fa5“,這個是用Unicode表示的,所以前面必須要加”u“;字符”r“的意思是表示忽略后面的轉(zhuǎn)義字符,這樣簡化了后面正則表達式里每遇到一個轉(zhuǎn)義字符還得挨個轉(zhuǎn)義的麻煩

最后可以組合成為一個函數(shù)

def remove_punctuation(line, strip_all=True):

if strip_all:

rule =re.compile(ur"[^a-zA-Z0-9\u4e00-\u9fa5]")

line =rule.sub('',line)

else:

punctuation ="""!?。"#$%&'()*+-/:;<=>@[\]^_`{|}~⦅⦆「」、、〃》「」『』【】〔〕〖〗?????〝〞????–—‘'?“”??…?﹏"""

re_punctuation ="[{}]+".format(punctuation)

line =re.sub(re_punctuation, "", line)

return line.strip()

清洗完畢后,有時候我們希望按照多個標點符號來分割 ,比如只要遇到中文或英文的逗號和句號等符號就分割,可以直接用translate把這些符號翻譯為統(tǒng)一的分隔符,再split:

strip_chars ='?"。.,,《》[]〖〗“”'

single_line =single_line.translate(str.maketrans(dict.fromkeys(strip_chars, '#')))

single_line =single_line.split('#')

總結(jié)

以上所述是小編給大家介紹的Python處理中文標點符號大集合,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。

總結(jié)

以上是生活随笔為你收集整理的python替换所有标点符号 正则_python 把标点符号替换为空的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。