Python中是否有BASIC的mid、right和left函数的等效函数?
我想做类似这样的事情:
>>> mystring = "foo"
>>> print(mid(mystring))
求助!
8 个回答
2
这是安迪的解决方案。我只是回应了User2357112的担忧,并给了变量一些有意义的名字。我还是个Python新手,更喜欢这些函数。
def left(aString, howMany):
if howMany <1:
return ''
else:
return aString[:howMany]
def right(aString, howMany):
if howMany <1:
return ''
else:
return aString[-howMany:]
def mid(aString, startChar, howMany):
if howMany < 1:
return ''
else:
return aString[startChar:startChar+howMany]
5
你可以使用这个方法,它会像这样工作
thadari=[1,2,3,4,5,6]
#Front Two(Left)
print(thadari[:2])
[1,2]
#Last Two(Right)# edited
print(thadari[-2:])
[5,6]
#mid
mid = len(thadari) //2
lefthalf = thadari[:mid]
[1,2,3]
righthalf = thadari[mid:]
[4,5,6]
希望这对你有帮助
11
谢谢你,Andy W
我发现mid()这个函数的表现跟我预期的不太一样,所以我做了以下修改:
def mid(s, offset, amount):
return s[offset-1:offset+amount-1]
我进行了以下测试:
print('[1]23', mid('123', 1, 1))
print('1[2]3', mid('123', 2, 1))
print('12[3]', mid('123', 3, 1))
print('[12]3', mid('123', 1, 2))
print('1[23]', mid('123', 2, 2))
结果是:
[1]23 1
1[2]3 2
12[3] 3
[12]3 12
1[23] 23
这正是我所期待的。原来的mid()代码产生了这个结果:
[1]23 2
1[2]3 3
12[3]
[12]3 23
1[23] 3
不过left()和right()这两个函数运行得很好。谢谢你。
36
如果我没记错的话,在QBasic中,right、left和mid这几个函数的作用大概是这样的:
>>> s = '123456789'
>>> s[-2:]
'89'
>>> s[:2]
'12'
>>> s[4:6]
'56'
http://www.angelfire.com/scifi/nightcode/prglang/qbasic/function/strings/left_right.html
132
切片来帮忙啦 :)
def left(s, amount):
return s[:amount]
def right(s, amount):
return s[-amount:]
def mid(s, offset, amount):
return s[offset:offset+amount]