2013-10-02 79 views
-2

我有以下变量。是否有办法挑出“Al#ex”并将其分配给新变量解析Python中的字符串3

string="@Al#ex$" 
firstChar="A" 
lastChar="x" 

结果应该是这样的。

print(finalString) 
>"Al#ex" 

在此先感谢。

+0

'finalString =串[1:5]'? '升= LEN(字符串); finalString = string [1:l-2]'? – twalberg

回答

0

使用str.find/str.rfind

def pick1(string, first, last): 
    i = string.find(first) 
    if i < 0: return '' 
    j = string.find(last, i+1) 
    if j < 0: return '' 
    return string[i:j+1] 

def pick2(string, first, last): 
    i = string.find(first) 
    if i < 0: return '' 
    j = string.rfind(last, i+1) 
    if j < 0: return '' 
    return string[i:j+1] 

>>> pick1('@Al#ex$', 'A', 'x') 
'Al#ex' 
>>> pick2('@Al#ex$', 'A', 'x') 
'Al#ex' 
>>> 
>>> pick1('@xl#eA$', 'A', 'x') 
'' 
>>> pick2('@xl#eA$', 'A', 'x') 
'' 
>>> 
>>> pick1('[email protected]#ex$', 'A', 'x') 
'Al#ex' 
>>> pick2('[email protected]#ex$', 'A', 'x') 
'Al#ex' 
>>> 
>>> pick1('[email protected]#ex$x', 'A', 'x') 
'Al#ex' 
>>> pick2('[email protected]#ex$x', 'A', 'x') 
'Al#ex$x' 
+0

如果在*'A'之前还有另一个'x' *怎么办?或者在输入字符串中的''Al#ex'之后有一个额外的'x' *? –

1
mystring="@Al#ex$" 
firstChar="A" 
lastChar="x" 
finalString = mystring[mystring.index(firstChar):mystring.rindex(lastChar)+1] 
print (finalString) 

输出

Al#ex