如何批量去掉文本的括號前後綴內容

  靜下心想想,日常的工作中,你們有沒有遇到過這樣的場景:ERP系統中的客戶名稱是按照項目、工程來命名的,我們應該如何通過這樣的客戶名稱來提取得到真正的公司名稱?

這裏,我用AIGC隨機生成了一些樣本。

1. (海生項目)卓越光電科技有限公司
2. (藍海貿易項目)天翼有限公司
3. 鴻圖科技(武漢)有限公司
4. (生態農業項目)綠源農業發展有限公司
5. 天合化工(長沙)有限公司
6. (智慧城市項目)城網科技有限公司
7. (未來能源項目)光明新能源科技有限公司
8. 龍騰(西安)重工有限公司
9. (健康醫療項目)(智慧醫療項目)康寧生物科技有限公司
10. (國際物流項目)海運達物流有限公司

  仔細分析上面的樣本,它其實涉及到以下幾個技術問題:

  • 括號可能包含全半角符號,都要可以替換;
  • 括號可能在中間,屬於公司名稱的一部分,這類括號包括裏面的內容不應該去除;
  • 文本可能在前綴和後綴都分別有括號,都需要能夠去除。
  • 前綴括號有可能不止一組,需要能反覆去除,直到獲取到真實的公司名稱。

  面對這些問題,作爲程序員,首先想到的就是正則表達式,快速匹配到前後綴括號的內容,然後替換爲空文本。再利用循環,一遍遍地把替換後的文本重新去查找前後綴,直至文本的第一個字符以及最後一個字符都不再是括號。

另外,我們還需要編寫一個方法,可以快速將全角符號轉換爲半角符號。

下面是小爬用python語言做的具體功能實現,各位童鞋不妨參考下思路:

文本批量全角轉半角

def Q2B(uchar):
    """單個字符 全角轉半角"""
    inside_code = ord(uchar)
    if inside_code == 0x3000:
        inside_code = 0x0020
    else:
        inside_code -= 0xfee0
    if inside_code < 0x0020 or inside_code > 0x7e: #轉完之後不是半角字符返回原來的字符
        return uchar
    return chr(inside_code)

def stringQ2B(ustring):
    """把字符串全角轉半角"""
    return "".join([Q2B(uchar) for uchar in ustring])

 

文本批量去除括號前後綴(保留中間的括號)

 

def remove_outer_parentheses(text):
    # 使用一個正則表達式反覆去除開頭的括號和其內容
    while True:
        new_text = re.sub(r'^\([^()]*\)', '', text)
        if new_text == text:  # 如果沒有更多匹配到開頭的括號,跳出循環
            break
        text = new_text
    
    # 使用一個正則表達式反覆去除結尾的括號和其內容
    while True:
        new_text = re.sub(r'\([^()]*\)$', '', text)
        if new_text == text:  # 如果沒有更多匹配到結尾的括號,跳出循環
            break
        text = new_text
    
    return text

 

大膽驗證一下代碼的可靠性,結果如下:

 

  AI時代了,作爲新時代碼農,不要再侷限於只能判斷兩個文本是否嚴格相等了。下次碰到業務端這類需求,給文本稍微加點前後綴,我們還要能用程序準確判斷,它還是那個它!

答應我,馬上邁入激動人心的2024年了,挑戰下自己,好嗎?

快來關注本公衆號 獲取更多爬蟲、數據分析的知識!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章