首先,我們來看一段文字:
一我日是一青技南是我一是個青每南天我更是新青的南欄我目是,青希南望我做是到青在南每我天是幾青分南鍾我讓是你青獲南得我提是高青。南
看完以後,你有什麼想法?你會不會覺得我是自戀狂?神經病?複讀機?臉滾鍵盤?
很好,那麼再看下面這一句話:
一日一技是一個每天更新的欄目,希望做到在每天幾分鍾讓你獲得提高。
是不是正常多了?
但是如果我說這兩段話,實際上是一樣的,你信不信?
現在有4個中文漢字:我是青南,首先介紹Python的ord函數,它可以查詢Unicode字符對應的Unicode碼
>>> ord('我')
25105
>>> ord('是')
26159
>>> ord('青')
38738
>>> ord('南')
21335接下來,介紹另一個函數chr。它的作用是把Unicode編碼轉換為Unicode字符。
例如:
>>> chr(21335)
'南'
>>> chr(38738)
'青'最後,介紹bin函數,它可以把十進位數字轉換為二進位數字:
>>> bin(6)
'0b110'
>>> bin(57)
'0b111001'以上就是本文涉及到的全部知識。下面,開始轉換。
由於Unicode是十進位數字,那麼就能進一步轉換為二進位數字:
>>> bin(25105)
'0b110001000010001'把前面的0b去掉:
>>> bin(25105)[2:]
'110001000010001'那麼,我是青南轉換為二進位以後,分別為:
>>> for char in '我是青南':
... print(char, bin(ord(char))[2:])
...
我 110001000010001
是 110011000101111
青 1001011101010010
南 101001101010111那麼原來那個看起來很混亂的句子是怎麼生成的呢?
from itertools import cycle
signature = '我是青南'
text = '一日一技是一個每天更新的欄目,希望做到在每天幾分鐘讓你獲得提高。'
complex_text = ''
for word, sig in zip(text, cycle(signature)):
complex_text = complex_text + word + sig
print(complex_text)運行效果如下圖所示:
那麼如果把我是青南先轉換為他們對應的二進位字符串,然後再穿插到原文中,效果就會變成這樣:
from itertools import cycle
signature_bin_list = ['110001000010001',
'110011000101111',
'1001011101010010',
'101001101010111']
text = '一日一技是一個每天更新的欄目,希望做到在每天幾分鐘讓你獲得提高。'
complex_text = ''
for word, sig in zip(text, cycle(signature_bin_list)):
complex_text = complex_text + word + sig
print(complex_text)運行效果如下:
到目前為止,你肯定不知道我在幹什麼。
下面,我將會介紹兩個神奇的數字:
8204
8205如果我使用chr把這兩個數字轉換為Unicode字符會怎麼樣?
我們來試一試:
很奇怪對吧?什麼東西都沒有?難道這兩個數字轉換為Unicode字符以後,都是空格??
沒事,我們把字符串形式的二進位數字中的1替換為chr(8204),把0替換為chr(8025)
from itertools import cycle
signature_bin_list = ['110001000010001',
'110011000101111',
'1001011101010010',
'101001101010111']
text = '一日一技是一個每天更新的欄目,希望做到在每天幾分鐘讓你獲得提高。'
complex_text = ''
for word, sig in zip(text, cycle(signature_bin_list)):
complex_text = complex_text + word + sig.replace('1', chr(8204)).replace('0', chr(8205))
print(complex_text)運行效果是什麼樣的?請看下面這張圖:
奇奇怪怪的符號沒有了,一切都變得乾乾淨淨,就像下面這樣:
一日一技是一個每天更新的欄目,希望做到在每天幾分鍾讓你獲得提高。
現在,你在電腦上把這一段話複製下來,存到記事本裡面,效果如下圖所示:
看起來很正常對吧。那麼現在,用vim把它打開,你看到的將會是這樣的:
在網頁上面,一切都正常,但是一旦有人複製了你的內容,直接轉載到了它自己的網站上。那麼你可以到法院去起訴他了,因為這些沒有寬度的符號,就是證據。
感謝機械工業出版社的贊助,文末送出4本《從零開始學Selenium自動化測試(基於Python·視頻教學版)》。本書基於Python語言,系統地介紹了Selenium自動化測試的相關知識及應用。書中的大部分知識點都匹配了可獨立運行的典型實例,便於讀者學習與實踐。另外,為了幫助讀者更加高效、直觀地學習,本書特意提供了約10小時基礎操作配套教學視頻。相信讀者通過系統地學習本書內容,可以全面掌握Selenium 3自動化測試技術。