-2

私は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'

「ジョン・バー、トム・フー、サム・フーバー」を入手する必要があります。

また、1 つの著者名だけでも機能し、その単一の名前 (および姓) を単独で返す必要があります。

私は何かをやってみました

  names = authors.split('\and')
  result = ', '.join(names[:-1]) + ' and '.join(names[-1])

しかし、それは明らかにうまくいきません。したがって、私の質問は、最初の著者をコンマで区切り、最後の著者を「and」で区切って取得するにはjoinどうsplitすればよいかということです.4人以上の著者がいる場合、最初の著者名のみが「et al.」とともに返されるべきであることを考慮してください. .

4

5 に答える 5

1
def natural_join(val, cnj="and"):
    if isinstance(val, list):
        return " ".join((", ".join(val[0:-1]), "%s %s" % (cnj, val[-1]))) if len(val) > 1 else val[0]
    else:
        return val

natural_join(['pierre'])
# 'pierre'

natural_join(['pierre', 'paul'])
# 'pierre and paul'

natural_join(['pierre', 'paul', 'jacques'])
# 'pierre, paul and jacques'

natural_join(['pierre', 'paul', 'jacques'], cnj="et")
# 'pierre, paul et jacques'
于 2013-04-28T20:58:32.790 に答える