使用限定符时Python.split()在我的程序中不起作用

使用限定符时Python.split()在我的程序中不起作用,python,Python,我正在尝试创建一个音乐猜测游戏,其中给出了艺术家的全名,并给出了标题中每个单词的首字母。我目前的代码(有效)能够为艺术家处理一个单词,为歌曲处理一个单词;例如伊甸夜曲 然而,如果艺术家的名字中有两个部分(Ed Sheeran),我的代码将无法处理这一点(类似于歌曲名称)。 因此,我想使用一个限定符来分割艺术家和歌曲,这样我就可以打印出整个艺术家的名字,然后使用try:和except:函数来打印歌曲中每个单词的第一个字母(如果有) 当我只使用空格时,.split()函数可以正常工作,但是当我使用单

我正在尝试创建一个音乐猜测游戏,其中给出了艺术家的全名,并给出了标题中每个单词的首字母。我目前的代码(有效)能够为艺术家处理一个单词,为歌曲处理一个单词;例如伊甸夜曲

然而,如果艺术家的名字中有两个部分(Ed Sheeran),我的代码将无法处理这一点(类似于歌曲名称)。 因此,我想使用一个限定符来分割艺术家和歌曲,这样我就可以打印出整个艺术家的名字,然后使用try:except:函数来打印歌曲中每个单词的第一个字母(如果有)

当我只使用空格时,.split()函数可以正常工作,但是当我使用单词或符号('DOT','|')时,它就不再工作了

这是有效的代码:

with open('MusicNames.txt') as file:
    text = file.readlines()[number]
    artist = text.split()[0]
    print('Artist: ' + artist)
    song = text.split()[1]
    songLetter = text.split()[1][0]
    print('First letter: ' + songLetter)
上述代码适用于这种风格的艺术家和歌曲:

但是,它在这种情况下不起作用:

因此,我使用限定词:

with open('MusicNames.txt') as file:
    text = file.readlines()[number]
    artist = text.split('|')[0]
    print('Artist: ' + artist)
    song = text.split('|')[1]
    songLetter = text.split('|')[1][0]
    print('First letter: ' + songLetter)
明智地看,这似乎有效。然而,它不再认为答案是正确的,因此要求我再次猜测:

我只是对为什么会发生这种情况感到困惑,因为如果我要打印两个变量,它们必须相等才能正确,它们将完全相同。虽然节目不这么认为

for i in range(2):
        guess = input('\nGuess: ')
        if guess == song and triesLeft == 2:
            global score
            score += 3
            print('Correct! Current Score: ' + str(score))
在else声明中,我进一步指出:打印(猜测)打印(歌曲):


感谢您阅读本文,并感谢您的帮助

您的文本阅读看起来可疑:

text = file.readlines()[number]

它的工作原理与readline()类似,因为它:

f.readline()
从文件中读取一行;换行符(\n)保留在字符串的末尾,如果文件不是以换行符结尾,则仅在文件的最后一行省略

(来自)

您永远不会从标题中删除
'\n'
,因此它本质上不符合您的输入,因为此标题末尾没有'\n'

您可以使用
song=song.rstrip()
()删除其中的空白,包括换行符

对于多词歌曲标题,您可能需要检查
str.split([sep[,maxslit]])
dokumentation并像这样使用它:

 # create 2 splits maximum
 artist, song = text.split(None, 2) # problem if your artist has 2 words though

请不要发布终端输出的屏幕截图。将它们作为文本,格式化为代码。遗憾的是,多词歌曲标题不起作用,因为存在艺术家有多个词以及歌曲名称的情况。另外,由于我不熟悉rtrim,如何在代码中正确使用rtrim。谢谢您的帮助。@Arctic typo-I ment rstrip()-与strip()相同,但仅在字符串的右侧。在歌手姓名和歌曲标题之间没有“特殊”的分隔符——如果整行都有空格,你打算如何将两者分开?我为您添加了一个rstrip链接。@您可以使用它
text=file.readlines()[number].rstrip()
在那里。。。f、 e.或通过
text=text.rstrip()