python在command.replace中使用变量

时间:2013-04-20 20:51:37

标签: python

这让我发疯了。我有一个这样的字符串:

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 个答案:

答案 0 :(得分: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'

答案 1 :(得分:0)

如果您使用homeclublist[-1:]代替homeclublist[-1]而不是homeclubfull = "Sheridan School III" homeclublist = homeclubfull.split() homeseries = ' '.join(homeclublist[:-1]) print(homeseries) ,那么您的问题就会得到解决,因为第一个返回一个列表(它留下了一个可以删除的尾随空格)。

你也可以不用替换这样做;通过切片所需的列表部分而不是您不想要的部分,然后替换:

{{1}}