Python:是否有相当于BASIC的中,右和左?

pyt*_*mer 28 python basic

我想做这样的事情:

    >>> mystring = "foo"
    >>> print(mid(mystring))
Run Code Online (Sandbox Code Playgroud)

救命!

And*_*y W 58

切片救援:)

def left(s, amount):
    return s[:amount]

def right(s, amount):
    return s[-amount:]

def mid(s, offset, amount):
    return s[offset:offset+amount]
Run Code Online (Sandbox Code Playgroud)

  • 小心那个'正确'的功能.`'asdf'[ - 0:] =='asdf'`,而不是'''`. (5认同)

frn*_*nhr 18

如果我记得我的QBasic,右,左,中间做这样的事情:

>>> s = '123456789'
>>> s[-2:]
'89'
>>> s[:2]
'12'
>>> s[4:6]
'56'
Run Code Online (Sandbox Code Playgroud)

http://www.angelfire.com/scifi/nightcode/prglang/qbasic/function/strings/left_right.html


小智 11

谢谢安迪·W

我发现 mid() 并没有完全按照我的预期工作,我修改如下:

def mid(s, offset, amount):
    return s[offset-1:offset+amount-1]
Run Code Online (Sandbox Code Playgroud)

我进行了以下测试:

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))
Run Code Online (Sandbox Code Playgroud)

结果是:

[1]23 1
1[2]3 2
12[3] 3
[12]3 12
1[23] 23
Run Code Online (Sandbox Code Playgroud)

这正是我所期待的。原始的 mid() 代码产生以下结果:

[1]23 2
1[2]3 3
12[3] 
[12]3 23
1[23] 3
Run Code Online (Sandbox Code Playgroud)

但 left() 和 right() 函数工作正常。谢谢。


小智 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]
Run Code Online (Sandbox Code Playgroud)

希望它会有所帮助