\xa0 是不間斷空白符
我們通常所用的空格是 \x20 ,是在標准ASCII可見字符 0x20~0x7e 范圍內。
而 \xa0 屬於 latin1 (ISO/IEC_8859-1)中的擴展字符集字符,代表空白符nbsp(non-breaking space)。
latin1 字符集向下兼容 ASCII ( 0x20~0x7e )。通常我們見到的字符多數是 latin1 的,比如在 MySQL 數據庫中。
有如下信息:
'T-shirt\xa0\xa0短袖圓領衫,體恤衫\xa0,', 'V-neck\xa0\xa0V型領\xa0sleeve\xa0\xa0袖子\xa0,',
我們如何將其中的\xz0去掉呢,試了re模塊的sub方法,發現沒有作用,於是又開始查閱相關資料,終於解決了該問題。方法如下:
>>> inputstring = u'\n Door:\xa0Novum \t ' >>> move = dict.fromkeys((ord(c) for c in u"\xa0\n\t")) >>> output = inputstring.translate(move) >>> output ' Door:Novum '
另外還有一種更簡單的方法,利用split方法:
>>> s
'T-shirt\xa0\xa0短袖圓領衫,體恤衫\xa0' >>> out = "".join(s.split()) >>> out 'T-shirt短袖圓領衫,體恤衫'
可以發現利用translate方法、split()可以完美解決,並且還可以替換\t \n字符,由此又學到了新知識!
關於ord函數:
ord()函數是chr()函數(對於8位的ASCII字符串)或unichr()函數(對於Unicode對象)的配對函數,它以一個字符(長度為1的字符串)作為參數,返回對應的ASCII數值,或者Unicode數值,如果所給的Unicode字符超出了你的Python定義范圍,則會引發一個TypeError的異常。
關於fromkeys方法:
dict中的fromkeys方法目的是創建一個只有key的字典,內部利用for循環,使三個字符的asii碼值成為可迭代對象(本來的整數是不可迭代的),分別對其迭代,存入字典。
關於translate方法:
Python translate() 方法根據參數table給出的表(包含 256 個字符)轉換字符串的字符, 要過濾掉的字符放到 del 參數中。接收到move返回的表(字典),之后對字符串進行替換。
join()方法:
join(): 連接字符串數組。將字符串、元組、列表中的元素以指定的字符(分隔符)連接生成一個新的字符串。可見該處用join方法真的是神來之筆,可謂絕妙!
值得注意的是,split方法中不帶參數時,表示分割所有換行符、制表符、空格。
轉載鏈接:https://blog.csdn.net/wangbowj123/article/details/78061618
