2013-02-08 143 views
0

我有一個代碼,需要xbmc的音樂標題,我想把它放在一個URL中發送它。然而urllib並不喜歡這裏標題中的空格代碼:刪除python中的空間不工作

if xbmc.Player().isPlayingAudio() and audio != 1 : 
    audio = 1 
    urllib2.urlopen('http://%s:3480/data_request?id=variableset&DeviceNum=%s&serviceId=urn:upnp-org:serviceId:XBMCState1&Variable=PlayerStatus&Value=playing_audio' % (ip, dev)) 
    tag = xbmc.Player().getMusicInfoTag() 
    title = tag.getTitle() 
    title.replace(" ", "_") 
    print ("playing:" + title) 

但是當檢查日誌文件時,空間還在那裏。我想要的是(標題= 69夏季)至(標題= summer_of_69),如果可能的轉換也是('),以什麼

感謝 麥克風

回答

3

str.replace不是就地操作 - 因爲字符串不可變的,它返回一個新的字符串,所以你需要事後分配。 title = title.replace(' ', '_')

或者,只是改變你的print到:print('playing:', title.replace(' ', '_'))

如果你只希望某些字符,那麼你可以這樣做:

>>> import re 
>>> track = "summer  of  '69" 
>>> re.sub('[^a-z0-9]+', '_', track, re.I) 
'summer_of_69' 

這需要什麼,是不是一個ASCII字母,一個數字並將它們整理成一個'_'。

+0

感謝它的工作,如果我還想刪除'角色,我是否需要製作其他行,或者我可以在此轉換中添加它,並感謝您的超級快速響應。 – user2052746 2013-02-08 22:56:50

+0

幾乎聽起來像你想過濾有效的字符,而不是你不想要的字符,但只是,'title.replace('','_')。replace(「'」,'')' – 2013-02-08 22:58:22

0

試試這個:

title = title.replace(" ", "_") 

title.replace()不能取代原來的字符串文本,它會創建一個新的字符串等於原始字符串,與更換。你所要做的就是獲取該方法的返回值,並將其放在原始變量的位置。