在python中使用split从句子中提取单词

2024-06-26 00:13:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我很难理解这段代码是如何工作的。在

def get_title(name):
    if '.' in name:
        return name.split(',')[1].split('.')[0].strip()
    else:
        return 'Unknown'

ans=get_title('Braund, Mr. Owen Harris')
print (ans)

据我所知,分割用于分割字符,但这对我来说没有多大意义。在


Tags: 代码nameingetreturniftitledef
3条回答

使用pythonrepl很容易理解会发生什么。最有趣的部分出现在您展示的代码的第3行:

return name.split(',')[1].split('.')[0].strip()

让我们在REPL中一步一步地运行它,以了解会发生什么:

^{pr2}$

如您所见,此函数用于提取标题,如MrMs等。如果在输入字符串中找不到,或{}等特定字符,则此实现很容易出错,例如:

^{3}$

从以下几点开始:

'Braund, Mr. Owen Harris'

第一个split将查找所有',,并在这些位置拆分字符串。所以你得到:

^{pr2}$

然后取第二个元素,剩下的是:

^{3}$

然后将该字符串除以“.”并得到:

[' Mr', ' Owen Harris']

之后,您将获取第一个元素:

' Mr'

把它剥掉:

'Mr'

你应该一个接一个地进行拆分,看看它是如何进行的,例如:

name = 'Braund, Mr. Owen Harris'
name = name.split(',')[1] # this split will give ['Braund', ' Mr. Owen Harris']
                          # then it takes element 1 which is ' Mr. Owen Harris'
name = name.split('.')[0] # here the split is [' Mr', ' Owen Harris']
                          # then it takes elemet 0 which is ' Mr'
name = name.strip()       # strip removes white spaces from the string (the leading space for this case)

相关问题 更多 >