0

MP3 ID3 タグから取得したアーティスト名の文字列があります

sArtist = "The Beatles"

私が欲しいのは、それをに変更することです

sArtist = "Beatles, the"

私は2つの異なる問題に直面しています。私の最初の問題は、「The」を「」と交換しているように見えることです。

if sArtist.lower().find('the') == 0:
    sArtist = sArtist.lower().replace('the','')
    sArtist = sArtist + ", the"

2 つ目の問題は、'The' と 'the' の両方をチェックする必要があるため、sArtist.lower() を使用することです。ただし、これにより結果が「ビートルズ」から「ビートルズ」に変わります。この問題を解決するために、.lower を削除し、2 行目のコードを追加して、両方のケースを明示的に探しました。

if sArtist.lower().find('the') == 0:
    sArtist = sArtist.replace('the','')
    sArtist = sArtist.replace('The','')
    sArtist = sArtist + ", the"

したがって、私が本当に解決する必要がある問題は、なぜ 'the' を<SPACE>ではなくに置き換えるのかということです<NULL>。しかし、誰かがこれを行うためのより良い方法を持っているなら、私は教育に喜んでいます:)

4

2 に答える 2

8

使用する

sArtist.replace('The','')

危険です。アーティストの名前がセオドアの場合はどうなりますか?

おそらく代わりに正規表現を使用してください:

In [11]: import re
In [13]: re.sub(r'^(?i)(a|an|the) (.*)',r'\2, \1','The Beatles')
Out[13]: 'Beatles, The'
于 2011-01-29T22:25:49.573 に答える
2

一方通行:

>>> def reformat(artist,beg):
...   if artist.startswith(beg):
...     artist = artist[len(beg):] + ', ' + beg.strip()
...   return artist
...
>>> reformat('The Beatles','The ')
'Beatles, The'
>>> reformat('An Officer and a Gentleman','An ')
'Officer and a Gentleman, An'
>>>
于 2011-01-29T22:28:06.500 に答える