[Python基礎]檢查及過濾字串中的特殊字符

更新於 發佈於 閱讀時間約 5 分鐘

在實務上,條碼槍傳送的資訊可能包含不可見字符控制字符。這可能是因為條碼槍在傳送條碼數據時使用了一些特殊字符,這些字符在可見字符集合之外,例如 \x06 就是 ASCII 中的 "ACK" 控制字符。

本文將探討,如何查詢處理這些特殊字符

在 Python 中,不可見字符通常指的是 ASCII 字符集中的控制字符和一些特殊字符,它們在顯示時不會產生可見的印刷效果。

以下是一些常見的不可見字符

控制字符:
\n換行符 (Line Feed) → 在字串中表示換行,移動到下一行的開始位置。
\r回車符 (Carriage Return) → 移動光標到當前行的開始位置,用於覆蓋該行的內容。
\t水平制表符 (Tab) → 插入水平制表,通常用於在字串中插入空格,以達到對齊的效果。
\b退格符 (Backspace) → 將光標向左移動一格,可用於消除前一字符。
\f換頁符 (Form Feed) → 在某些情境中,表示換頁,用於在輸出中插入頁面分隔符。
\v垂直制表符 (Vertical Tab) → 插入垂直制表,用於在字串中插入空格,達到對齊的效果。
\a響鈴字符 (Bell) → 觸發響鈴聲或警告聲。在現代終端中,通常不會實際發出聲音,而是視為通知或警告。

特殊空白字符:
\s空格符 (Space) → 表示一個普通的空格。
\f換頁符 (Form Feed) → 類似於控制字符中的 \f,表示換頁。
\v垂直制表符 (Vertical Tab) → 類似於控制字符中的 \v,表示垂直制表。
\u200B零寬空格 (Zero Width Space) → 表示一個不佔據實際寬度的空格,通常在排版和格式化文本時使用。
\u00A0不中斷空白 (Non-Breaking Space) → 表示一個不會被自動斷行的空格,常用於確保連續的文字不會被分開。

其他控制字符:
\x00 到 \x1FASCII 控制字符的範圍,包括空白字符、退格、換行等。
\x7F刪除字符


查詢不可見字符

repr()

可以將字符串轉換包含可見和不可見為字符的表示形式。

print(repr(your_string))

範例說明

假設讀取到的條碼槍含有\x06字符,假設條碼資訊為DEF,若未處理可能會造成傳送錯誤的資料\x06DEF,所以先用repr()檢查是否包含不可見字符。

# 假設這是從條碼槍讀取的字符串
barcode_data = "ABC\x06DEF"

# 使用 repr() 函數來查看字符串的 Python 表示形式
repr_of_barcode = repr(barcode_data)

# 打印結果'
print(f'原始字串:{barcode_data}')
print(f'處理過後: {repr_of_barcode}')
repr()範例

repr()範例


過濾不可見字符:

使用正則表達式re.sub,過濾掉字串中的不可見字符​

re.sub 是 Python 中 re 模組中的一個函數

re.sub(pattern, repl, string, count=0, flags=0)

pattern: 要匹配的正則表達式。
repl: 用於替換匹配字串的字符串。
string: 要進行替換的原始字符串。
count (可選): 替換的最大次數,默認為 0(替換所有匹配)。
flags (可選): 正則表達式的標誌,用於修改匹配的行為

範例說明

正則化後,就將控制字符\x06移除了,顯示正常字串。

repr_of_barcode = repr(barcode_data)只是將可見與不可見字符,一起轉換成字串顯示,若將repr_of_barcode丟進去該範例的正則化表示,則不會過濾\x06喔,因為已經都轉成字串了。

import re

# 假設這是從條碼槍讀取的字符串
barcode_data = "ABC\x06DEF"

# 使用 repr() 函數來查看字符串的 Python 表示形式
repr_of_barcode = repr(barcode_data)

#使用正則化 保留 ASCII 字符範圍內的可見字符
re_barcode = re.sub(r'[^\x20-\x7E]', '', barcode_data)
# 打印結果'
print(f'原始字串:{barcode_data}')
print(f'repr()處理過後: {repr_of_barcode}')
print(f'正則化: {re_barcode}')
正則表達式

正則表達式

隨手紀錄,遇到的狀況及整理後的心得




留言
avatar-img
留言分享你的想法!
小松鼠-avatar-img
2024/01/31
封面圖好酷,是用AI畫的還是手畫版?
螃蟹_crab-avatar-img
發文者
2024/02/01
小松鼠 不是ㄟ,我用微軟的Bing
avatar-img
螃蟹_crab的沙龍
147會員
261內容數
本業是影像辨識軟體開發,閒暇時間進修AI相關內容,將學習到的內容寫成文章分享。
螃蟹_crab的沙龍的其他內容
2025/04/25
在 Python 中,字典(dict)是非常常用的資料結構,用來儲存 key-value 配對。而在操作字典時,.setdefault() 是一個常被忽略但非常實用的方法。 這篇文章會完整介紹 .setdefault() 的語法、用途、與實務範例,幫助你更有效率地處理字典資料。 什麼是 .se
Thumbnail
2025/04/25
在 Python 中,字典(dict)是非常常用的資料結構,用來儲存 key-value 配對。而在操作字典時,.setdefault() 是一個常被忽略但非常實用的方法。 這篇文章會完整介紹 .setdefault() 的語法、用途、與實務範例,幫助你更有效率地處理字典資料。 什麼是 .se
Thumbnail
2025/01/30
Python 程式在電腦上的執行流程 當我們在電腦上執行 Python 程式時,主要經歷以下幾個步驟: 1. 編寫 Python 程式碼 開發者使用文字編輯器或 IDE(如 VS Code、PyCharm)撰寫 Python 程式,並將其存為 .py 檔案。 例如,一個簡單的 Python
Thumbnail
2025/01/30
Python 程式在電腦上的執行流程 當我們在電腦上執行 Python 程式時,主要經歷以下幾個步驟: 1. 編寫 Python 程式碼 開發者使用文字編輯器或 IDE(如 VS Code、PyCharm)撰寫 Python 程式,並將其存為 .py 檔案。 例如,一個簡單的 Python
Thumbnail
2024/10/17
在一個典型的程式專案中,UI、Controller 和 Main 的分工通常遵循 MVC 模型(Model-View-Controller) 的架構,這是一種常見的設計模式,能夠將應用程式的邏輯和界面進行分離。 大部分典型的程式專案設計: UI (View):專注於用戶界面,展示數據,並將用
Thumbnail
2024/10/17
在一個典型的程式專案中,UI、Controller 和 Main 的分工通常遵循 MVC 模型(Model-View-Controller) 的架構,這是一種常見的設計模式,能夠將應用程式的邏輯和界面進行分離。 大部分典型的程式專案設計: UI (View):專注於用戶界面,展示數據,並將用
Thumbnail
看更多
你可能也想看
Thumbnail
沙龍一直是創作與交流的重要空間,這次 vocus 全面改版了沙龍介面,就是為了讓好內容被好好看見! 你可以自由編排你的沙龍首頁版位,新版手機介面也讓每位訪客都能更快找到感興趣的內容、成為你的支持者。 改版完成後可以在社群媒體分享新版面,並標記 @vocus.official⁠ ♥️ ⁠
Thumbnail
沙龍一直是創作與交流的重要空間,這次 vocus 全面改版了沙龍介面,就是為了讓好內容被好好看見! 你可以自由編排你的沙龍首頁版位,新版手機介面也讓每位訪客都能更快找到感興趣的內容、成為你的支持者。 改版完成後可以在社群媒體分享新版面,並標記 @vocus.official⁠ ♥️ ⁠
Thumbnail
每年4月、5月都是最多稅要繳的月份,當然大部份的人都是有機會繳到「綜合所得稅」,只是相當相當多人還不知道,原來繳給政府的稅!可以透過一些有活動的銀行信用卡或電子支付來繳,從繳費中賺一點點小確幸!就是賺個1%~2%大家也是很開心的,因為你們把沒回饋變成有回饋,就是用卡的最高境界 所得稅線上申報
Thumbnail
每年4月、5月都是最多稅要繳的月份,當然大部份的人都是有機會繳到「綜合所得稅」,只是相當相當多人還不知道,原來繳給政府的稅!可以透過一些有活動的銀行信用卡或電子支付來繳,從繳費中賺一點點小確幸!就是賺個1%~2%大家也是很開心的,因為你們把沒回饋變成有回饋,就是用卡的最高境界 所得稅線上申報
Thumbnail
「讓子彈飛一下」是中國大陸網民用語。在信息被嚴格管控、又延在信息爆炸的環境,很多無法證實的耳語傳言滿天飛,無論是真是假,讓信息彈片先飛一下,等待塵埃落定,不失為應對的辦法。 但是,「讓子彈飛一下」足夠嗎?我個人覺得:如果想收到正確消息而不被蒙蔽,最好是能夠積極查證。但這也正是最困難
Thumbnail
「讓子彈飛一下」是中國大陸網民用語。在信息被嚴格管控、又延在信息爆炸的環境,很多無法證實的耳語傳言滿天飛,無論是真是假,讓信息彈片先飛一下,等待塵埃落定,不失為應對的辦法。 但是,「讓子彈飛一下」足夠嗎?我個人覺得:如果想收到正確消息而不被蒙蔽,最好是能夠積極查證。但這也正是最困難
Thumbnail
本文介紹如何對 Telegram 憑證監控機器人的代碼進行優化,包括新增指令、讀取變數、提高可讀性和可維護性。
Thumbnail
本文介紹如何對 Telegram 憑證監控機器人的代碼進行優化,包括新增指令、讀取變數、提高可讀性和可維護性。
Thumbnail
戰男女性別!! 好啦,其實我也不知道辣XDDD 但就是最近很夯的Threads,原本剛申請的時候,純粹只是拿來發發一些廢短文,抒發性質居多,也沒想太多。 但可能是最近脆的用戶暴增,不小心隨便發一則小廢短句,都會有陌生人來響應,真的是嚇死寶寶了~~ 然後捏,一不小心就掌握到了流量密碼,當然我的
Thumbnail
戰男女性別!! 好啦,其實我也不知道辣XDDD 但就是最近很夯的Threads,原本剛申請的時候,純粹只是拿來發發一些廢短文,抒發性質居多,也沒想太多。 但可能是最近脆的用戶暴增,不小心隨便發一則小廢短句,都會有陌生人來響應,真的是嚇死寶寶了~~ 然後捏,一不小心就掌握到了流量密碼,當然我的
Thumbnail
【駭入別人銷售漏斗,模仿驗證有效流程】
Thumbnail
【駭入別人銷售漏斗,模仿驗證有效流程】
Thumbnail
自從通訊軟體的發達,測試封鎖也變成熱門討論的一環,這個是給已知封鎖的狀態下測驗喔!
Thumbnail
自從通訊軟體的發達,測試封鎖也變成熱門討論的一環,這個是給已知封鎖的狀態下測驗喔!
Thumbnail
👨‍💻簡介 最近因為憑證越來越多,需要監控什麼時候到期,當到期時發送到期通知,因此撰寫一個簡單的小程式來完成。 這次使用Python和Telegram Bot來監控SSL證書的到期時間並發送通知。並使用GCP工具,如CloudFunction和CloudScheduler做部署平台。
Thumbnail
👨‍💻簡介 最近因為憑證越來越多,需要監控什麼時候到期,當到期時發送到期通知,因此撰寫一個簡單的小程式來完成。 這次使用Python和Telegram Bot來監控SSL證書的到期時間並發送通知。並使用GCP工具,如CloudFunction和CloudScheduler做部署平台。
Thumbnail
雜湊、編碼和加密雖然在資訊安全中扮演不同的角色,但很多人往往容易搞混它們的用途,本篇文章將帶你了解他們的區別。
Thumbnail
雜湊、編碼和加密雖然在資訊安全中扮演不同的角色,但很多人往往容易搞混它們的用途,本篇文章將帶你了解他們的區別。
Thumbnail
前幾天看到一則標題『貼牌的中國製智慧門鈴內含安全漏洞』,讓我想到以前寫過類似的故事,關於小型資訊公司與貼牌軟體漏洞的故事,也想重新整理思路當面對類似問題無論是開發公司或是購買軟體的公司該如何面對。
Thumbnail
前幾天看到一則標題『貼牌的中國製智慧門鈴內含安全漏洞』,讓我想到以前寫過類似的故事,關於小型資訊公司與貼牌軟體漏洞的故事,也想重新整理思路當面對類似問題無論是開發公司或是購買軟體的公司該如何面對。
Thumbnail
在實務上,條碼槍傳送的資訊可能包含不可見字符或控制字符。這可能是因為條碼槍在傳送條碼數據時使用了一些特殊字符,這些字符在可見字符集合之外,例如 \x06 就是 ASCII 中的 "ACK" 控制字符。 本文將探討,如何查詢及處理這些特殊字符。
Thumbnail
在實務上,條碼槍傳送的資訊可能包含不可見字符或控制字符。這可能是因為條碼槍在傳送條碼數據時使用了一些特殊字符,這些字符在可見字符集合之外,例如 \x06 就是 ASCII 中的 "ACK" 控制字符。 本文將探討,如何查詢及處理這些特殊字符。
Thumbnail
談了許多網路安全的議題,提醒民眾要注意哪些事情,建構哪些網路安全思維,讓我們可以降低踏入詐騙陷阱的風險。但除了民眾本身要不斷學習、提升防詐意識外,是不是還有其他方面的作法呢? 本文就來聊聊在企業端可以做些什麼。 要打造一個密不可破的防護網,企業端就不能夠缺席。 舉幾個例子讓大家知道。
Thumbnail
談了許多網路安全的議題,提醒民眾要注意哪些事情,建構哪些網路安全思維,讓我們可以降低踏入詐騙陷阱的風險。但除了民眾本身要不斷學習、提升防詐意識外,是不是還有其他方面的作法呢? 本文就來聊聊在企業端可以做些什麼。 要打造一個密不可破的防護網,企業端就不能夠缺席。 舉幾個例子讓大家知道。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News