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 に答える