Python去除字串中固定字元或固定位置字元

2021-10-08 11:03:14 字數 3374 閱讀 2513

在c語言中輸入十六進製制的陣列,如下面的**,通常是帶有逗號,以及0x的十六進製制標誌。而在crc計算器中,輸入資料進行識別的時候,應該去掉0x,有的時候還要去掉空格以及英文逗號,所以我們需要去除字串中特定位置的字元。因為上位機是使用python做的,所以引出本文內容:python去除字串中特定衣服或特定位置字元,本文中主要使用了replace函式pop函式

unsigned

char test[8]

=

str_input = self.input.text(

)# 讀取輸入

str_input = str_input.replace(

" ","")

# 去掉空格

str_input = str_input.replace(

",","")

# 去掉逗號

去掉空格和逗號的原理是使用replace函式把字串中的" "及","替換為"",那麼如何去除0x呢?

因為已經去除了空格和逗號,所以後面討論的內容都是0x120x340x560x780x9a0xbc0xde0xff這種形式的,剛開始以為會有0x0x的出現,所以去除0x時不能使用replace函式直接替換0x避免把有效字元去掉;後面想到十六進製制只有0-f,不可能有x的,所以是不會出現0x0x這個數,因為有效字元裡面不可能包含字元0x。觀察輸入的規律,發現可以定點敲除。使用pop函式可以敲除字串裡的某乙個字元。比如list_str_input.pop(1)是去除字串中的索引為1的字元。觀察去除了空格以及逗號留下來的字串0x120x340x560x780x9a0xbc0xde0xff,可以發現每四個裡面的後面兩個是有效元素,所以我們只需要去除前兩個字元即可以去掉0x

原理:如果只有四個字元,比如』0x12』,有兩種方法可以去除』0x』,即是先去除0或者先去除x。

對於0x12,首先要使用list函式為每乙個字元分配乙個索引,0對應索引0,x對應索引1,1對應索引2,2對應索3。先去除0之後,0x12變成x12,此時x的位置索引不再是1,而是0。新的索引位置變成了x對應索引0,1對應索引1,2對應索2。所以我們只需要對索引0去除兩次即可。

list_str_input.pop(0)

# 剔除索引0即是剔除字元0

list_str_input.pop(0)

# 第二次剔除索引0是剔除字元x

先去除x,是去除索引1。去除x之後,』0x12『變成』012『,此時0的位置索引依然是0。新的索引位置變成了0對應索引0,1對應索引1,2對應索2。對應的**是

list_str_input.pop(1)

# 剔除索引1即是剔除字元x

list_str_input.pop(0)

# 剔除索引0即是剔除字元0

上面輸入的只有乙個位元組,如果是多個位元組,比如0x120x340x560x780x9a0xbc0xde0xff,對於上面的兩種方法無論哪一種都是去除索引0和索引1的字元,只不過是先後順序有區別。去除0x第一次後,字串變成120x340x560x780x9a0xbc0xde0xff,現在第乙個0x索引2索引3位置,去除0x第二次後,字串變成12340x560x780x9a0xbc0xde0xff第乙個0x索引4索引5位置,所以每次去除的索引位置相比著上一次增加2len(list_str_input) >> 2求出需要迴圈去除0x的次數i-max,然後3.1和3.2中的索引的位置每次增加2

str_input =

' 0x12,0x34,0x56,0x78,0x9a,0xbc,0xde,0xff'

str_input = str_input.replace(

" ","")

# 去掉空格

str_input = str_input.replace(

",","")

# 去掉逗號

# str_input = str_input.replace("0x", "") # 去掉0x,可以用,因為輸入的十六進製制裡面不可能包含0x

list_str_input =

list

(str_input)

# list為每乙個字元分配乙個索引

for i in

range(0

,len

(list_str_input)

>>2)

:# for迴圈0,2,只迴圈=0,=1

# list_str_input.pop(1 + 2 * i) # 先剔除索引1,0x12變成012,在剔除索引0

# list_str_input.pop(0 + 2 * i)

list_str_input.pop(0+

2* i)

# 先剔除索引0,0x12變成x12,在剔除索引0即剔除字元x

list_str_input.pop(0+

2* i)

list_str_output =

''.join(list_str_input)

# 合併為字串

因為是不會出現0x0x這個數,所以我們使用replace函式也可以把字串中的0x去掉,雖然比使用pop函式簡單,但是3.1和3.2中的去除字元的方法思路可以使用到其他的地方去。

str_input = str_input.replace(

"0x",""

)# 去掉0x,可以用,因為輸入的十六進製制裡面不可能包含0x

Shell命令替換檔案中固定字串

1,你需要知道替換使用sed 2,你需要知道如何遍歷當前目錄下的所有檔案 3,你需要如何對每個找到的檔案應用sed 4,你需要知道sed預設替換的時候不會儲存到原檔案。答案 替換所有需要使用sed的g引數 遍歷當前目錄下所有檔案的方法 find type f find聯合sed的使用方法 find ...

查詢mysql欄位中固定字串並替換的幾個方法

我們的要求是,把位址欄位的中國去掉,並跟據位址欄位來設定所屬省份的 province id 字段。第一 替找字串,我們可以用mysql裡的replace 這個用法,本博也有提到。詳見 好我們把 中國 這個字元給去掉。update www.cppcns.comtable set 程式設計客棧addre...

python 去除字串中指定字元

python中的strip 可以去除頭尾指定字元 ss 我還有更多python的學習資料,無法一一放出,n qq裙688244617,免費自取 n n n print ss.strip n 結果 1 我還有更多python的學習資料,無法一一放出,2 qq裙688244617,免費自取 可以看到只能...