2015-02-10 60 views
0

這是我正在嘗試檢索電影類型的部分代碼。從字符串字符中刪除前綴u's

genres = tr.find('span', 'genre').find_all('a') 
genres = [g.contents[0] for g in genres] 
print genres 

[u'Animation'] 
[u'Comedy'] 
[u'Comedy', u'Romance'] 

我想刪除那些u前綴。

希望的輸出:

['Animation'] 
['Comedy'] 
['Comedy', 'Romance'] 
+2

爲什麼你婉將其刪除?,它不會影響任何東西 – Hackaholic 2015-02-10 21:45:53

+0

@ Hackaholic,這是項目所必需的。 – Alph 2015-02-10 21:47:44

+1

您是否正在嘗試生成輸出(例如,到一個文件)這些字符會在哪裏解析?前綴'u'是信息性的,所以你知道Python輸出的字符串的類型。它類似於附加到Python長整數的'L'。 – bmhkim 2015-02-10 21:47:55

回答

2

u意味着這些字符串被編碼爲Unicode。

如果你想刪除它,你可以這樣做:

genres = [str(g.contents[0]) for g in genres] 

注:

  • 這如果字符串中的所有字符都是ASCII字符纔有效。
  • 正如其他人所說,u不是字符串的一部分,它只是表示它的編碼,所以沒有理由刪除它。
+1

與limelights的迴應一樣,只有unicode字符串只包含ascii字符才能使用。 – bmhkim 2015-02-10 21:48:53

+0

@ Christian。這工作像魔術一樣。 – Alph 2015-02-10 23:52:12

2

沒有必要從字符串中實際刪除unicode,但是如果您仍然設置這樣做,則可以使用map()或列表理解。

map(str, [u'Comedy', u'Romance']) 
>> ['Comedy', 'Romance'] 

或列表比較

l = [str(x) for x in ['Comedy', 'Romance']] 
+1

只有unicode字符串只包含ascii字符時,這纔會起作用.... – bmhkim 2015-02-10 21:48:23

+0

這是完全正確的,我還沒有時間寫在我的答案中。謝謝! – 2015-02-10 21:49:05

1

字符串中的前綴u表示Unicode

>>> unicode("abc") 
u'abc' 

無需取下