【发布时间】:2013-04-04 14:11:24
【问题描述】:
我对 Python 完全陌生,并且有一个由\and 分隔的名称列表,我需要将第一个用逗号分隔,最后一个用“and”分隔。但是,如果名称超过 4 个,则返回值应该是第一个名称以及短语“et al.”。所以如果我有
authors = 'John Bar \and Tom Foo \and Sam Foobar \and Ron Barfoo'
我应该得到“John Bar et al.”。而与
authors = 'John Bar \and Tom Foo \and Sam Foobar'
我应该得到“John Bar, Tom Foo and Sam Foobar”。
它还应该只使用一个作者姓名,并单独返回该单一姓名(和姓氏)。
我尝试做类似的事情
names = authors.split('\and')
result = ', '.join(names[:-1]) + ' and '.join(names[-1])
但这显然行不通。所以我的问题是如何使用join 和split 让第一作者用逗号分隔,最后一个作者用“and”分隔,考虑到如果作者超过四位,则只应返回第一作者姓名与“等人”。
【问题讨论】:
-
你有什么问题?
-
看看str.split()方法:docs.python.org/2/library/stdtypes.html#string-methods
-
你确定
'\and'?应该是r'\and'或'\\and'。 -
您应该详细说明您是如何尝试解决问题的(代码、基本算法),这样可以集中帮助而不是为您完成工作。
-
authors.split(' \and ') 是一个很好的起点