2016-01-25 239 views
0

我是python中的新手。併爲一個非常基本的問題表示歉意。使用u'...'將字符串列表轉換爲普通字符串列表

我正在使用python pattern.en庫並嘗試獲取單詞的同義詞。這是我的代碼,工作正常。

from pattern.en import wordnet 
a=wordnet.synsets('human') 
print a[0].synonyms 

這是什麼輸出我從這個得到:

[u'homo', u'man', u'human being', u'human'] 

但我的計劃,我需要插入此數組作爲本:

['homo', 'man', 'human being', 'human'] 

我如何得到一個輸出並從我的輸出中移除'u'。

在此先感謝..!

+0

你的意思是你的程序需要比unicode字符串其他字符串列表? – YCFlame

+0

不需要從你的字符串中刪除'u',它和字符串一樣工作得很好,'u'代表Unicode字符串 – Hackaholic

+0

是的,我不知道你指的是Unicode。:( –

回答

3

嘗試適當encoding - 但是不在乎這u不會對數據任何影響 - 這是unicode的對象(而不是字節數組)的只是一個明確的表示,如果你的代碼需要背unicode話,最好給它的Unicode。

>>>d = [u'homo', u'man', u'human being', u'human'] 
>>>print [i.encode('utf-8') for i in d] 
>>>['homo', 'man', 'human being', 'human'] 
+0

它可以工作,但它不是一個很好的建議。沒有必要回到字節數組/字符串表示。因爲等價是從來沒有在python2 unicode vs str的問題,並在python3 str默認情況下unicode – alvas

+0

@alvas是的,所以我提到它('你做對數據沒有任何影響) – SIslam

+1

@Slslam希望你不要介意我是否大膽=) – alvas

0

簡而言之:

有沒有必要給你統一碼的列表轉換成字符串。他們是同樣的事情


在長:

在String對象u'...'前綴代表在Python 2.0中引入的一個Unicode對象,見https://docs.python.org/2/tutorial/introduction.html#unicode-strings

與Python 2.0開始用於存儲文本數據的新數據類型是 可供程序員使用:Unicode對象。它可用於存儲和操作Unicode數據(請參閱http://www.unicode.org/)和 與現有字符串對象的良好集成,並在必要時提供 自動轉換。

而且因爲Python 3.0,看到https://docs.python.org/3.2/tutorial/introduction.html#about-unicode

與Python 3.0開始的所有字符串支持Unicode(見 http://www.unicode.org/)。

不管什麼默認的字符串類型,等效性檢查時,他們應該在這兩個的Python 2.x和3.x相同:

[email protected]:~$ python2 
Python 2.7.11 (default, Dec 15 2015, 16:46:19) 
[GCC 4.8.4] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> type(u'man') 
<type 'unicode'> 
>>> type('man') 
<type 'str'> 
>>> u'man' == 'man' 
True 

[email protected]:~$ python3 
Python 3.4.1 (default, Jun 4 2014, 11:27:44) 
[GCC 4.8.3] on linux 
Type "help", "copyright", "credits" or "license" for more information. 
>>> type(u'man') 
<class 'str'> 
>>> type('man') 
<class 'str'> 
>>> u'man' == 'man' 
True 

而且在Python 2,當你必須或被要求從unicode轉換爲str類型讓我們來說類型檢查或東西,例如:

[email protected]:~$ python3 
>>> u'man' == 'man' 
True 
>>> type(u'man') == type('man') 
True 
>>> exit() 
[email protected]:~$ python2 
>>> u'man' == 'man' 
True 
>>> type(u'man') == type('man') 
False 

,那麼你應該能夠簡單地將其轉換爲str(u'man')u'man'.encode('utf-8')

但是,如果你的unicode字符串超出ascii範圍,並且你試圖將它寫入文件或打印到控制檯,但可能沒有將defaultencoding設置爲'utf- 8' 。在這種情況下,觀看https://www.youtube.com/watch?v=sgHbC6udIqc


此外,這裏,是涉及u'...'前綴類似的問題: