首頁 >後端開發 >Python教學 >如何選擇性地刪除非 ASCII 字元並保留空格和句點?

如何選擇性地刪除非 ASCII 字元並保留空格和句點?

Linda Hamilton
Linda Hamilton原創
2024-10-19 20:32:02945瀏覽

How to Selectively Remove Non-ASCII Characters Preserving Spaces and Periods?

選擇性刪除非 ASCII 字元

處理文字資料通常需要刪除非 ASCII 字符,同時保留某些符號例如空格和句號。雖然基本過濾方法可能會刪除所有非 ASCII 字符,但這在某些情況下可能並不理想。

讓我們考慮以下程式碼:

<code class="python">def onlyascii(char):
    if ord(char) < 48 or ord(char) > 127: return ''
    else: return char</code>

此程式碼刪除所有具有 ASCII 值的字元小於 48 或大於 127,有效地移除文字中的非 ASCII 字元。但是,它也會刪除空格 (ASCII 32) 和句點 (ASCII 46)。

要選擇性地刪除非ASCII 字符,同時保留空格和句點,我們可以利用Python 的string.printable 模組:

<code class="python">import string
printable = set(string.printable)
filtered_data = filter(lambda x: x in printable, data)</code>

string.printable 集包含系統上所有可列印的字符,包括數字、字母、符號、空格和句點。使用這個集合作為過濾器,我們可以從字串中刪除所有不可列印的字元。

例如,如果我們有字串「somex00string.withx15個有趣的字元」:

<code class="python">s = "some\x00string. with\x15 funny characters"
''.join(filter(lambda x: x in printable, s))</code>

結果將是:

'somestring. with funny characters'

此方法有效地刪除非ASCII 字符,同時保留空格和句點,為進一步處理提供乾淨的字串。

以上是如何選擇性地刪除非 ASCII 字元並保留空格和句點?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn