2013-04-20 74 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