String.replace ('the', '') покидает белое пространство
Вопрос
У меня есть строка, которая является названием исполнителя, который я получаю от тега mp3 id3
sArtist = "The Beatles"
Я хочу изменить это на
sArtist = "Beatles, the"
У меня столкнулись с двумя разными проблемами. Моя первая проблема в том, что я, кажется, торгую «на».
if sArtist.lower().find('the') == 0:
sArtist = sArtist.lower().replace('the','')
sArtist = sArtist + ", the"
Моя вторая проблема заключается в том, что, поскольку я должен проверить как «и», и «я использую sartist.lower ()». Однако это меняет мой результат с «Битлз», «to» Beatles, The ». Чтобы решить эту проблему, я только что удалил. LINELE и добавил вторую строку кода, чтобы явно искать оба случая.
if sArtist.lower().find('the') == 0:
sArtist = sArtist.replace('the','')
sArtist = sArtist.replace('The','')
sArtist = sArtist + ", the"
Так что проблема, которую мне действительно нужно решить, заключается в том, почему я заменяю «с <SPACE>
вместо <NULL>
. Анкет Но если у кого -то есть лучший способ сделать это, я был бы рад образованию :)
Решение
В одну сторону:
>>> 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'
>>>
Другие советы
С использованием
sArtist.replace('The','')
опасный. Что произойдет, если художник зовут Теодор?
Возможно, вместо этого используйте regex:
In [11]: import re
In [13]: re.sub(r'^(?i)(a|an|the) (.*)',r'\2, \1','The Beatles')
Out[13]: 'Beatles, The'