string.replace('the','')正在留下空格

时间:2011-01-29 22:18:05

标签: python string mp3 id3

我有一个字符串,它是我从MP3 ID3标签

获得的艺术家的名字
sArtist = "The Beatles"

我想要的是将其改为

sArtist = "Beatles, the"

我遇到了两个不同的问题。我的第一个问题是,我似乎在交换''为''。

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

我的第二个问题是因为我必须检查'The'和'the'我使用sArtist.lower()。然而,这将我的结果从“甲壳虫乐队”改为“披头士乐队”。为了解决这个问题,我刚刚删除了.lower并添加了第二行代码以明确查找这两种情况。

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

所以我真正需要解决的问题是为什么我用<SPACE>而不是<NULL>替换'the'。但如果有人有更好的方法来做这件事,我会很高兴接受教育:)

2 个答案:

答案 0 :(得分: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'

答案 1 :(得分: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'
>>>