2017-01-04 84 views
0

雖然我設法獲得所需的所有數據,並將其保存在一個cv文件中,但我得到的輸出是UTF-8格式,這是正常的(糾正我如果我錯了)UTF-8編碼和希臘字符

TBH我已經「玩」了.encode()和.decode()選項沒有任何結果。

這裏是我的代碼

brands=[name.text for name in Unibrands] 

這裏是輸出

u'Spirulina \u0395\u03bb\u03bb\u03b7\u03bd\u03b9\u03ba\u03ae' 

這是所需的輸出

u'Spirulina Ελληνική' 
+0

print()結果。 –

+0

基本上,您正在查看所述字符串的'repr()'輸出,其中正常情況下您會獲得某些字符的轉義序列。如果你打印()結果爲@宏傑李建議,那麼你會正確地得到你的字符串輸出。 – poke

+0

@宏傑李我這樣做了,結果是u'Spirulina \ u03 {u03bb \ u03b7 \ u03bd \ u03b9 \ u03ba \ u03ae' – Volpym

回答

0

該字符串已經是罰款;你會看到它的repr,它確實會轉義某些字符,因爲這是爲了安全地直接複製並粘貼到Python源代碼中(在Python 2.x中它意味着它只需要可打印的ASCII字符) - 例如,代碼點U+0395 GREEK CAPITAL LETTER EPSILON。你看到這種形式的,因爲打印清單(或其他容器)總是會顯示其內容的repr - 如果你不是print字符串直接,你應該可以看到一個適當的字形,而不是逃脫形式:

>>> print(u'Spirulina \u0395\u03bb\u03bb\u03b7\u03bd\u03b9\u03ba\u03ae') 
>>> 'Spirulina Ελληνική' 

你也可以考慮升級到更新的Python版本;由於Python默認在源文件中接受Unicode字符,因此Python 3.5(可能更早的3.x版本)不再轉義repr中的這些字母。

+0

我認爲bs4不能與python 3.5及更高版本 – Volpym

+0

@volpym編譯根據[它的pypi頁]( https://pypi.python.org/pypi/beautifulsoup4/),bs4不支持3.x.沒關係,它只是說3.4,後來的3.x版本仍然兼容。 – lvc

+0

那麼我升級到python 3.0並開始獲得所需的輸出。因此我標記了你的答案;) – Volpym