[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
121會員
204內容數
本業是影像辨識軟體開發,閒暇時間進修AI相關內容,將學習到的內容寫成文章分享。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
螃蟹_crab的沙龍 的其他內容
前幾篇討論到各種裝飾器的用法,本文將介紹另外一種裝飾器,可以將方法轉換成屬性來使用。 property也可以動態的取出物件的值,隨著時間或其他運算改變所產生的值,讓我們繼續往下看更多介紹吧。
先前我們談論到靜態方法就像是定義工具箱一樣,那麼抽象方法就像是共用表格的概念,例如註冊帳號時會填寫的一些基本資料,就有包含制式的表格,裡面有需填寫的欄位,例如姓名,性別等。
先前學到自定函式的使用方法,那如果在一個很龐大的程式架構中發散了一推自定函式,有沒有辦法可以整理一下,讓程式結構整齊又簡潔呢? 可以使用裝飾器staticmethod 定義靜態方法,全部整理到一個類別去,想像成是一個工具箱的概念,工具箱就是類別,靜態方法就像是裡面的工具一樣。
在使用類別創建實例時,輸入的屬性的都要定義好資料型態,例如dog_1 = Dog("Buddy", 3),有沒有輸入一段字串讓他自己判斷的方法阿? 有的就是使用classmethod: classmethod 是一種裝飾器,它用於定義類別方法。類別方法與實例方法不同,它們被綁定到類別而不是實例。
當你想讓原本函式新增其他功能,又不想更動原本函式時,Python提供了一種強大而靈活的工具,那就是裝飾器。 但對於新手來說這個裝飾器,非常抽象難以理解,讓我們繼續往下看,慢慢的抽絲剝繭吧。 在 Python 中,使用「@」當做裝飾器使用的語法糖符號
在人與人溝通之間,最怕雞同鴨講,彼此不對頻的狀況常會造成誤會。在程式語言中也會出現類似的情況,所以就有一些約定來彼此約束。 PEP 8 是 Python 社群廣泛遵循的一種風格指南,用於提高 Python 程式碼的可讀性和一致性。一開始是 Python 之父 Guido van Rossum 自己
前幾篇討論到各種裝飾器的用法,本文將介紹另外一種裝飾器,可以將方法轉換成屬性來使用。 property也可以動態的取出物件的值,隨著時間或其他運算改變所產生的值,讓我們繼續往下看更多介紹吧。
先前我們談論到靜態方法就像是定義工具箱一樣,那麼抽象方法就像是共用表格的概念,例如註冊帳號時會填寫的一些基本資料,就有包含制式的表格,裡面有需填寫的欄位,例如姓名,性別等。
先前學到自定函式的使用方法,那如果在一個很龐大的程式架構中發散了一推自定函式,有沒有辦法可以整理一下,讓程式結構整齊又簡潔呢? 可以使用裝飾器staticmethod 定義靜態方法,全部整理到一個類別去,想像成是一個工具箱的概念,工具箱就是類別,靜態方法就像是裡面的工具一樣。
在使用類別創建實例時,輸入的屬性的都要定義好資料型態,例如dog_1 = Dog("Buddy", 3),有沒有輸入一段字串讓他自己判斷的方法阿? 有的就是使用classmethod: classmethod 是一種裝飾器,它用於定義類別方法。類別方法與實例方法不同,它們被綁定到類別而不是實例。
當你想讓原本函式新增其他功能,又不想更動原本函式時,Python提供了一種強大而靈活的工具,那就是裝飾器。 但對於新手來說這個裝飾器,非常抽象難以理解,讓我們繼續往下看,慢慢的抽絲剝繭吧。 在 Python 中,使用「@」當做裝飾器使用的語法糖符號
在人與人溝通之間,最怕雞同鴨講,彼此不對頻的狀況常會造成誤會。在程式語言中也會出現類似的情況,所以就有一些約定來彼此約束。 PEP 8 是 Python 社群廣泛遵循的一種風格指南,用於提高 Python 程式碼的可讀性和一致性。一開始是 Python 之父 Guido van Rossum 自己
你可能也想看
Google News 追蹤
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
Thumbnail
Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
Thumbnail
Python 提供了一個功能豐富的標準函式庫,其中 random 專門用於生成隨機數。本文將介紹 random 的基本介紹,以及函式應用。
Thumbnail
Dictionary(字典) : 是一個可以用來存放不同資料(不同型態)的容器(集合) 每一個元素都是以{鍵(Key):值(Value)}所構成,字典中每個項目都是用","隔開
Thumbnail
在如今的資訊時代,如何有效的獲取並處理數據,成為了許多專業人士和企業的重要需求,爬蟲技術,作為獲取網絡數據的重要工具,其重要性不言而喻,而這篇文章將分享Python爬蟲的基礎,讓你能獲取想要的網頁數據。
Thumbnail
Python 基本語法 python 語法的後綴名是以.py 結尾 python 執行方式 使用交互介面執行 使用 python test.py 命令執行 使用./test.py 執行 python 標示符 以單下劃線開頭的屬性,表示是類的私有屬性(包括方法,變量)。如:_foo表示不能直接訪問的類
詳細原碼: https://reurl.cc/ex8lZm hello world Variable (變數) 輸入 input() 四則運算 列表 list (陣列) 集合 字典(Dictionary) 給值 try 檢驗 取所有值 判斷式 If else 迴圈 Switch //字典方式 CSV
Thumbnail
上一篇我們介紹到的資訊為三大法人最新一天的買賣狀況,不過我們通常在觀察法人都是以一段時間的變化作為依據判斷,因此我們接下來需要的資訊就是一段時間的三大法人資料,並將其化成圖示的方式呈現在line上,以便我們可以快速以圖表方式了解法人近況變化
Thumbnail
在上一篇文章中我們教了如何爬取同業比較的相關排名資訊,而這次我們要爬取的資料是三大法人的資訊,並且以圖表的方式呈現出來,可以輕鬆的了解個股近期籌法的變動。我們將分成兩個部分來介紹,上半部先製作最新法人,而下半部再爬取歷史法人的資訊,並將其畫成圖表呈現
Thumbnail
「VSCode 是世上最棒的 IDE 了吧」這時有人跳出來表示不服,定睛一看原來是那陳年的大哥 Visual Studio,他說道:「用 Windows 做開發的人一定要裝 Visual Studio 這樣專業的 IDE,不要裝其他次等的文字編輯器,才可以有效提升專業度。」
Thumbnail
今天我們再來教更多不一樣的回訊方式,像是讓機器人回傳圖片、影片,甚至是音訊,使我們的機器人更佳的活靈活現,就讓我們趕快開始今天的教學吧!!
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
Thumbnail
Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
Thumbnail
Python 提供了一個功能豐富的標準函式庫,其中 random 專門用於生成隨機數。本文將介紹 random 的基本介紹,以及函式應用。
Thumbnail
Dictionary(字典) : 是一個可以用來存放不同資料(不同型態)的容器(集合) 每一個元素都是以{鍵(Key):值(Value)}所構成,字典中每個項目都是用","隔開
Thumbnail
在如今的資訊時代,如何有效的獲取並處理數據,成為了許多專業人士和企業的重要需求,爬蟲技術,作為獲取網絡數據的重要工具,其重要性不言而喻,而這篇文章將分享Python爬蟲的基礎,讓你能獲取想要的網頁數據。
Thumbnail
Python 基本語法 python 語法的後綴名是以.py 結尾 python 執行方式 使用交互介面執行 使用 python test.py 命令執行 使用./test.py 執行 python 標示符 以單下劃線開頭的屬性,表示是類的私有屬性(包括方法,變量)。如:_foo表示不能直接訪問的類
詳細原碼: https://reurl.cc/ex8lZm hello world Variable (變數) 輸入 input() 四則運算 列表 list (陣列) 集合 字典(Dictionary) 給值 try 檢驗 取所有值 判斷式 If else 迴圈 Switch //字典方式 CSV
Thumbnail
上一篇我們介紹到的資訊為三大法人最新一天的買賣狀況,不過我們通常在觀察法人都是以一段時間的變化作為依據判斷,因此我們接下來需要的資訊就是一段時間的三大法人資料,並將其化成圖示的方式呈現在line上,以便我們可以快速以圖表方式了解法人近況變化
Thumbnail
在上一篇文章中我們教了如何爬取同業比較的相關排名資訊,而這次我們要爬取的資料是三大法人的資訊,並且以圖表的方式呈現出來,可以輕鬆的了解個股近期籌法的變動。我們將分成兩個部分來介紹,上半部先製作最新法人,而下半部再爬取歷史法人的資訊,並將其畫成圖表呈現
Thumbnail
「VSCode 是世上最棒的 IDE 了吧」這時有人跳出來表示不服,定睛一看原來是那陳年的大哥 Visual Studio,他說道:「用 Windows 做開發的人一定要裝 Visual Studio 這樣專業的 IDE,不要裝其他次等的文字編輯器,才可以有效提升專業度。」
Thumbnail
今天我們再來教更多不一樣的回訊方式,像是讓機器人回傳圖片、影片,甚至是音訊,使我們的機器人更佳的活靈活現,就讓我們趕快開始今天的教學吧!!