Python中是否有BASIC的mid、right和left函数的等效函数?

68 投票
8 回答
369594 浏览
提问于 2025-04-17 23:29

我想做类似这样的事情:

>>> 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]

撰写回答