1. 程式人生 > >Python 字串處理特殊空格 \xc2\xa0 Non-breaking space

Python 字串處理特殊空格 \xc2\xa0 Non-breaking space

今天遇到一個問題,使用python的find函式尋找字串中的第一個空格時沒有找到正確的位置,例如:

http://zc.whmc.edu.cn ==> 無法訪問的網站或無效的招標網站

使用find(" ")函式尋找時找到的第一個空格對應在==>後面的那個位置。一開始覺得是編碼問題,但是檔案是用UTF-8編碼的,按理說不應該產生編碼問題,就用Sublime開啟一看是這樣的:

這裡寫圖片描述

可以看到,我的Sublime設定了顯示空白,所以第二個紅線上方有一個白點,而第一個紅線上方卻沒有,這說明第一個紅線上方那個字元確實不是一個空格,也就是說函式的執行沒有問題。但那個空格倒底是個什麼東西呢?在Sublime中File-->Reopen with Encoding-->Hexadecimal

開啟檔案可以看到是這樣的:

這裡寫圖片描述

在網上可以查到,==>對應的UTF-8編碼是\x3d\x3d\x3e,所以前面的那個神祕字元的編碼就是\xc2\xa0,上網查到這是一個叫做Non-breaking space的東西,用於阻止在此處自動換行和阻止多個空格被壓縮成一個。至於解決方法,先用subplace("\xc2\xa0", " ")把這個特殊的空格替換一下就行了。