0

我有一个获取 xbmc 音乐标题的代码,我想把它放在一个 url 中发送。但是 urllib 不喜欢代码中标题中的空格:

 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)

但是,当检查日志文件时,空间仍然存在。我想要的只是 (title = summer of 69) 到 (title = summer_of_69) 并且如果可能的话也将 (') 转换为空

谢谢麦克风

4

2 回答 2

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 字母、数字的东西,然后将它们压缩成一个“_”。

于 2013-02-08T22:52:22.463 回答
0

尝试这个:

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

title.replace() 不会替换原始字符串中的文本,它会创建一个与原始字符串相等的新字符串,并进行替换。您所要做的就是获取该方法的返回值,并将其放在原始变量的位置。

于 2013-02-08T22:58:42.793 回答