2013-02-08 3 views
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) 

그러나 로그 파일을 체크인 할 때 여전히 공간이 있습니다. 문자열이기 때문에 - 내가 원하는 건 (제목 = summer_of_69)에 (제목 = 69 여름)와 (') 아무것도 또한 가능하면 변환

감사

답변

3

str.replace는 인플레 이스 작동하지 마이크입니다 불변 (immutable)이면 새로운 문자열을 반환하므로 나중에 할당해야합니다. 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' 

, 한 자릿수를 하나의 '_'로 표시합니다.

+0

감사합니다. '문자도 제거하고 싶다면 다른 줄을 만들어야합니까, 아니면이 변환에서 추가 할 수 있으며 빠른 응답을 보내 주셔서 감사합니다. – user2052746

+0

거의 당신이 원하지 않는 문자가 아닌 유효 문자를 필터링하고 싶지만,'title.replace ('', '_'). replace (" '",' ')' –

0

이 시도 :

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

title.replace을() 원래 문자열의 텍스트를 대체하지 않습니다, 그것은 교체로, 원래 문자열과 동일 새로운 문자열을 만듭니다. 이 메소드의 반환 값을 가져 와서 원래 변수 위치에 놓기 만하면됩니다.