0

これは私を夢中にさせています。次のような文字列があります。

Sheridan School III

このようなリストで:

Sheridan School III
Lake Bluff Elementary II
Barrington IV

末尾部分を変数にしたいhomeseries

そしてその前の部分を可変にするhomeclub

文字列を分割すると、次のように問題なくシリーズを取得できます。

しかし.replace、元の文字列の最後の部分を取り除くために使用したい文字列内でそのシリーズを使用することはできません。.replace 内で変数を使用するにはどうすればよいですか? Python はエラーをスローしますが、これを変数として参照する簡単な方法があると確信しています。

homeclubfull = "Sheridan School III"
homeclublist = homeclubfull.split(" ")
homeseries = homeclublist[-1:]    # this should return "III"
homeclub=homeclubfull.replace(homeseries,'')
print homeclub, home series

スローされたエラー:

import.py:51: TypeError: expected a character buffer object
4

2 に答える 2

2

str.rsplit()メソッドと制限で最後から分割します。

homeclub, homeseries = homeclubfull.rsplit(None, 1)

デモ:

>>> homeclubfull = "Sheridan School III"
>>> homeclub, homeseries = homeclubfull.rsplit(None, 1)
>>> homeclub
'Sheridan School'
>>> homeseries
'III'

文字列ではなく にリストを渡そうとしたために発生するエラー。.replace()代わりにこれが欲しかった:

homeseries = homeclublist[-1]   # Note, no : 

1 つの要素を選択するのではなく、リストをスライスしていました。スライスの結果は常に次のようになります。

>>> homeclubfull.split()[-1:]
['III']
>>> homeclubfull.split()[-1]
'III'
于 2013-04-20T20:52:55.843 に答える
0

homeclublist[-1:]最初のものはリストを返すため、代わりに使用すると問題は解決homeclublist[-1]します(削除できる末尾のスペースが残ります)。

置換せずにこれを行うこともできます。不要な部分ではなく必要なリストの部分をスライスしてから、次のように置き換えます。

homeclubfull = "Sheridan School III"
homeclublist = homeclubfull.split()
homeseries = ' '.join(homeclublist[:-1])
print(homeseries)
于 2013-04-20T21:02:23.023 に答える