2013-10-09 27 views
0

考虑以下字符串输入到一个Python化的方法:移动定冠词到字符串的结尾在Python

福尔摩斯历险记福尔摩斯

战争

的传说的艺术两个城市

一个火星

的公主

我想看看下面的输出:

福尔摩斯

冒险的

孙子兵法,两个城市的

故事,火星的

公主,A

有什么想法吗?

+0

您只是想要一个修复单个标题的函数,还是希望函数能够转换整个输入?而且,如果是后者,是输入字符串列表,一个带有换行符的大字符串,一个文本文件......?这些输入中的空白行是否必须单独保留为空字符串/行? – abarnert

+0

@abarnert我可以自己做实际的实现。我只是无法弄清楚实际需要的代码。 – Soviero

回答

2

首先,split关闭的第一个字:

first, rest = title.split(None, 1) 

现在,检查第一个字是文章:

if first in {'A', 'An', 'The'}: 

而且,如果是的话,它移动到结束:

return rest + ', ' + first 

把它一起:

def fix_title(title): 
    first, rest = title.split(None, 1) 
    if first in {'A', 'An', 'The'}: 
     return rest + ', ' + first 
    return title 

如果你希望能够妥善处理空行,你需要更多的逻辑,我觉得在这种情况下,读取与partition而不是split更好。只要将中间的两行改为:

first, _, rest = title.partition(' ') 
    if first in {'A', 'An', 'The'} and rest: 
+0

我喜欢这个,因为它可以处理字符串中没有明确文章的时候。 – Soviero

+0

'An'或'A'不是一篇定文 – Spaceghost

+0

@Spaceghost:对,他们是_indefinite_文章。但这真的属于对这个问题的评论;操作员显然希望'A'和'An''被移动,他只是用错误的措辞来询问它。 – abarnert

相关问题