回答
你是對的,看3.1.3. Unicode Strings。
這是自Python 2.0以來的語法。
我的猜測是它表示「Unicode」,它是正確的嗎?
是的。
如果是這樣,從什麼時候可用?
Python 2.x.
(在Python 3.x中的字符串使用Unicode默認情況下,有沒有必要爲u
前綴)。
以下應該有所幫助:
http://docs.python.org/library/functions.html#unicode
http://www.amk.ca/python/howto/unicode(跳過了「 Python的Unicode支持「,如果您已經熟悉Unicode原則)
所有用於人類的字符串都應該使用u」「。
我發現下面的心態有很大幫助,在使用Python字符串處理時:所有 Python的清單字符串應該使用u""
語法。 ""
語法僅適用於字節數組。
在撲開始之前,讓我解釋一下。大多數Python程序首先使用""
作爲字符串。但之後他們需要支持Internet上的文檔,因此他們開始使用"".decode
,並且突然間他們在解碼這個和所有內容時都會遇到異常情況 - 所有這一切都是因爲使用了字符串""
。在這種情況下,Unicode確實會像病毒一樣行爲並會造成嚴重破壞。但是,如果你按照我的規則,你將不會有這種感染(因爲你已經被感染)。
'bash -c「echo你不應該使用b \\」... \\\「作爲字節數組嗎?」' – kennytm 2010-03-17 19:06:47
@KennyTM聽起來不錯!簡單地說,所有用於人類的字符串都應該使用「u」「'。 – 2010-03-17 19:38:12
如果你想虔誠地在任何地方使用Unicode,對於許多應用程序(但不是全部),這是一件好事 - 你幾乎肯定希望Python 3.x,而不是2.x.這在2010年可能並非如此,但在2014年,大多數阻止您升級到3.x的庫或平臺也將阻止您正確使用Unicode ... – abarnert 2014-09-12 00:01:43
您在u'Some String'
中的u表示您的字符串是一個Unicode字符串。
問:我處於一種可怕的,可怕的匆忙狀態,我從Google搜索登陸。我試圖將這些數據寫入一個文件,我得到一個錯誤,而且我需要最簡單的,可能有缺陷的解決方案。
答:你應該真的閱讀喬爾的Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)關於字符集的散文。
問:SRY沒有時間碼請
A:很好。請嘗試str('Some String')
或'Some String'.encode('ascii', 'ignore')
。但你應該真的閱讀一些關於Converting a Unicode string和this的優秀,優秀的關於字符編碼的入門書。
如果字符串僅包含* ASCII文本*。在所有其他情況下,您必須明確編碼。 – 2014-09-13 13:55:01
這把u''視爲「擺脫」的東西。這告訴我你並沒有真正理解它是什麼。您通常不只是想「擺脫」它,並且從Unicode字符串中生成字節字符串的正確方法取決於該字符串包含的內容以及在哪個上下文中。 – 2014-12-09 12:32:49
@LennartRegebro完全同意 - 這是一個只是口齒不清的答案,但它積累了一些驚人的upvotes。編輯試圖引導人們朝着正確的方向發展。 – Andrew 2015-02-05 22:28:23
它是Unicode。
只要把變量str()
之間,它會正常工作。
,但如果你有兩個列表如下所示:
a = ['co32','co36']
b = [u'co32',u'co36']
如果檢查set(a)==set(b)
,它會爲假,但如果這樣做如下:
b = str(b)
set(a)==set(b)
現在,結果將是真實的。
危險,危險。你不應該編碼一個Unicode('str()'或'u'€'.encode()')。如果字符串包含非ASCII,則用戶將收到UnicodeEncodeException。 – 2016-12-26 17:21:37
此外,您的代碼不起作用。 'b = str(b)'只給出列表的字符串'repr()',即'b =「[u'co32',u'co36']」'。然後'set(a)== set(b)= False' – 2016-12-26 17:23:46
我來到這裏是因爲我的requests
輸出上有搞笑字符綜合症。我認爲response.text
會給我一個正確解碼的字符串,但在輸出中,我發現有趣的雙字符德國變音本應該是。
原來response.encoding
是空的,所以響應不知道如何正確解碼內容,只是把它當作ASCII(我猜)。
我的解決方案是用'response.content'獲取原始字節並手動將decode('utf_8')
應用於它。結果是schöneUmlaute。
的正確解碼
獻給
與未正確解碼
fĂźr
- 1. python中的字符串之前的'u'是什麼意思?
- 2. python字符串之前的b前綴是什麼意思?
- 3. 字符文字與字符串文字的U前綴有什麼區別?
- 4. u和r前綴如何在python中使用字符串?
- 5. 用_作爲前綴的python字符串,它是什麼?
- 6. grep前綴python字符串
- 7. 在Python中,什麼C++等價於'r'前綴字符串?
- 8. Python字典鍵/帶前綴的值 - 前綴是什麼?
- 9. 什麼是C#@符號前綴字符串的C++等價物?
- 10. Python - 在HTTP POST請求中發送unicode字符(前綴爲\ u)
- 11. php utf8_encode - 字符獲得前綴\ u
- 12. 獲取預警不帶前綴蟒蛇字符串文字「U」
- 13. @前綴對C#中的字符串文字做了什麼?
- 14. C#中字符串前的@是什麼?
- 15. 'u'符號在字符串值前面意味着什麼?
- 16. 從python中的字符串中刪除一組前綴字符
- 17. 不明白爲什麼字母U前綴我的raw_input的()
- 18. python print命令在每個字符串的開頭顯示'u前綴,爲什麼會發生這種情況?
- 19. U「\ ufeff」在Python字符串
- 20. Python中的字符串前綴和轉義字符
- 21. 字符串的前綴
- 22. 爲什麼TensorFlow返回的字符串在Python 3中顯示爲'b'前綴?
- 23. 怎麼滴根據前綴字符串
- 24. 字符串前的$是什麼意思?
- 25. 字符串有前綴PHP
- 26. 比較Groovy中的字符串前綴
- 27. 刪除TSQL中字符串的前綴
- 28. 是否有與Python的「u」Unicode前綴相當的Javascript?
- 29. 爲什麼C#/ .Net字符串長度前綴和空終止?
- 30. 什麼是註冊前綴?
@美國洛特,那麼並不總是容易被發現在確切的頁面和行中的引用,特別是當你是某種語言的新手。在這裏問我更容易,更快。 (見:http://meta.stackexchange.com/questions/16353/stackoverflow-for-the-lazy-newbie-developer)順便說一句,谷歌索引這個線程有多快,現在是第三個結果:http: //www.google.com/search?q=u+prefix+on+python – OscarRyz 2010-03-17 19:02:57
@Oscar雷耶斯:我很抱歉,但語言參考*必須*是您的第一,最後和唯一的這種事情。否則,你會陷入永久的n00b模式。牢牢掌握語言參考手冊,以便通過n00b個問題並開始爲人們解決實際問題非常重要。 – 2010-03-17 19:13:28
@ S.Lott:你說得對。 **現在**我知道那裏的語言參考:) – OscarRyz 2010-03-17 19:29:23