2013-02-08 58 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()不能取代原来的字符串文本,它会创建一个新的字符串等于原始字符串,与更换。你所要做的就是获取该方法的返回值,并将其放在原始变量的位置。