2013-04-20 75 views
0

這讓我瘋狂。我有一個這樣的字符串:python使用變量裏面command.replace

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 

回答

2

斯普利特從與str.rsplit() method和限制結束:

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 : 

你是切片列表中,不選擇一個元素。切片結果列表中,始終:

>>> homeclubfull.split()[-1:] 
['III'] 
>>> homeclubfull.split()[-1] 
'III' 
+0

你不僅修復它(謝謝)你教育我(謝謝^ 2) - 你'太棒了,Martijn! – 2013-04-20 21:06:10

0

你的問題就會如果不是homeclublist[-1:]您使用homeclublist[-1]因爲第一個返回一個列表(它留下了尾隨的空間,你可以剝離)來解決。

你也可以做到這一點,而不需要替換;通過切片清單的一部分,而不是你不想要的部分,然後取代:

homeclubfull = "Sheridan School III" 
homeclublist = homeclubfull.split() 
homeseries = ' '.join(homeclublist[:-1]) 
print(homeseries) 
+0

謝謝,Jurgenreza - 感謝澄清! – 2013-04-20 21:07:04