」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 如何從Python字串中刪除不可列印的字元?

如何從Python字串中刪除不可列印的字元?

發佈於2024-11-09
瀏覽:510

How to Remove Non-Printable Characters from Strings in Python?

從Python 中的字串中剝離不可列印的字元

與Perl 相比,Python 缺乏POSIX 正規表示式類,因此很難檢測並使用正規表示式刪除不可列印的字元。

那麼,如何在 Python 中實現此目的?

一種方法是利用 unicodedata 模組。 unicodedata.category 函數將 Unicode 字元分為各種類別。例如,分類為 Cc(控制)的字元代表不可列印的字元。

利用這些知識,您可以建立符合所有控製字元的自訂字元類別:

import unicodedata
import re
import sys

all_chars = (chr(i) for i in range(sys.maxunicode))
categories = {'Cc'}
control_chars = ''.join(c for c in all_chars if unicodedata.category(c) in categories)

control_char_re = re.compile('[%s]' % re.escape(control_chars))

def remove_control_chars(s):
    return control_char_re.sub('', s)

此函數有效地從輸入字串中移除所有不可列印的 ASCII 字元。

或者,您可以使用 Python 的內建 string.printable 方法過濾掉不可列印的字元。但是,此方法不包括 Unicode 字符,因此可能不適合所有用例。

要處理Unicode 字符,您可以在正則表達式中擴展字符類,如下所示:

control_chars = ''.join(map(chr, itertools.chain(range(0x00,0x20), range(0x7f,0xa0))))

此擴充字元類別包含基本控製字元以及常見的非字元-可列印的Unicode字元。

透過對應修改remove_control_chars函數,可以成功處理ASCII和Unicode不可列印字元。

版本聲明 本文轉載於:1729551315如有侵犯,請洽[email protected]刪除
最新教學 更多>

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3