飄逸的python 編碼雜症之在字串前面加u

2021-09-09 00:21:22 字數 870 閱讀 1091

有時候我們從其它地方接受的字串經過艱難跋涉,它變了個樣。比如收到的是'\u6253\u602a\u8005'而不是u'\u6253\u602a\u8005'。

明明肉眼看起來只需要加個u,但是怎麼加呢?

>>s = '\u6253\u602a\u8005'

>>s

'\\u6253\\u602a\\u8005'

>>'u'+s

'u\\u6253\\u602a\\u8005'

這樣不行。

而且表面看起來是'\u6253\u602a\u8005',其實內部是'\\u6253\\u602a\\u8005',就是轉義了反斜槓,有2個斜槓,而我要的是\u而不是

\\u。

這時喜歡用黑魔法的可能會想到eval。

>>eval('u"'+s+'"')

u'\u6253\u602a\u8005'

>>print eval('u"'+s+'"')

打怪者

嗯,沒錯,用eval可以。不過這樣實現太蛋疼了。

python就自帶了解決方法。就是unicode-escape

>>unicode(s,'unicode-escape')

u'\u6253\u602a\u8005'

另外,還有個跟unicode-escape齊名的東西,叫string-escape。它的作用可以說是「去掉轉義,把2個反斜槓變成1個」。看例子。

>>s = 'hello\\nworld'

>>s

'hello\\nworld'

>>s.decode('string-escape')

'hello\nworld'

python 疑難雜症 zadd報錯

正常使用zadd報錯 r redis.strictredis host xx d dict d 1231 123r.zadd d rediserror zadd requires an equal number of values and scores python版本 3.6.1 在另外乙個環境3...

mybatis foreach的疑難雜症

背景 今天寫 的時候,寫了一段sql,如下所示 select product name,product type,subscription id,product period,subscription begin,interest begin,interest end,subscription st...

python爬蟲網頁解析中的疑難雜症

該部分主要是通過正規表示式獲取兩個標籤之間的內容,通常這種標籤都是成對出現的。開始標籤如 字尾標籤如 核心 res tr r m tr re.findall res tr,language,re.s re.m 例子 python view plain copy coding utf 8 import...