考虑以下字符串输入到一个Python化的方法:移动定冠词到字符串的结尾在Python
福尔摩斯历险记福尔摩斯
战争
的传说的艺术两个城市
一个火星
的公主
我想看看下面的输出:
福尔摩斯冒险的
孙子兵法,两个城市的
故事,火星的
公主,A
有什么想法吗?
考虑以下字符串输入到一个Python化的方法:移动定冠词到字符串的结尾在Python
福尔摩斯历险记福尔摩斯
战争
的传说的艺术两个城市
一个火星
的公主
我想看看下面的输出:
福尔摩斯冒险的
孙子兵法,两个城市的
故事,火星的
公主,A
有什么想法吗?
首先,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:
我喜欢这个,因为它可以处理字符串中没有明确文章的时候。 – Soviero
'An'或'A'不是一篇定文 – Spaceghost
@Spaceghost:对,他们是_indefinite_文章。但这真的属于对这个问题的评论;操作员显然希望'A'和'An''被移动,他只是用错误的措辞来询问它。 – abarnert
您只是想要一个修复单个标题的函数,还是希望函数能够转换整个输入?而且,如果是后者,是输入字符串列表,一个带有换行符的大字符串,一个文本文件......?这些输入中的空白行是否必须单独保留为空字符串/行? – abarnert
@abarnert我可以自己做实际的实现。我只是无法弄清楚实际需要的代码。 – Soviero