轉義符都知道,但可能會理解不到位,或者不深入。今天在工作中,遇到了轉義符的問題,記錄於此,也供大伙參考。
1.問題概述
爬取到的文本段落,中間有\t \r未處理就存入數據庫了(文本截取如下: '......有效性。\r次要......' ),導致后來需要刷庫,而在刷庫過程中,
我用的是:UPDATE china_drug_trials SET public_test_info = REPLACE(public_test_info, CHAR(10), '');
但應該是:UPDATE china_drug_trials SET public_test_info = REPLACE(public_test_info, "\\r", '') ;
2.問題反思
錯誤出在理解 轉義符何時生效上。
- 轉義字符(如\n \r)什么時候生效?
當它會被解釋器解釋的時候,如print輸出時。
- 如果轉義字符(如\n \r)在字符串里呢?
那么它只是代表其特殊意義,沒被解釋,並不生效。即上文提到的字符串,要替換其中的 \r,用 \\r 就可以了(兩個\ 轉義 轉義符'\')。
(就好像玫瑰里塞個求婚鑽戒,沒被女票看到就是沒生效的,雖然你知道這枚鑽戒是有其特殊意義的)
示例:

\n 沒被解釋器解釋,並不生效,所以 b 指的是 '123\n456'
\n 被解釋器解釋,即print輸出時,轉義字符生效啦,換了行
- 如果字符串中有已經生效的轉義符呢?(如換行或者制表符)
要操作它,要么直接找\r \n ,要么根據其ASCII碼找。即上文提到的字符串,要替換其中已生效的\r,用 \r 或者CHAR(9)。
示例:

替換字符串 a 中已經生效的轉義符,要么直接找\r \n ,要么根據其ASCII碼找。
