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

时间:2014-03-23 02:20:52

标签: python basic

我想做这样的事情:

    >>> mystring = "foo"
    >>> print(mid(mystring))

帮助!

8 个答案:

答案 0 :(得分:48)

切片救援:)

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

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

def mid(s, offset, amount):
    return s[offset:offset+amount]

答案 1 :(得分:17)

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

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

答案 2 :(得分:2)

谢谢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()函数运行正常。谢谢。

答案 3 :(得分:1)

您可以使用此方法,也可以这样做

thadari=[1,2,3,4,5,6]

#Front Two(Left)
print(thadari[:2])
[1,2]

#Last Two(Right)
print(thadari[:-2])
[5,6]

#mid
mid = len(thadari) //2

lefthalf = thadari[:mid]
[1,2,3]
righthalf = thadari[mid:]
[4,5,6]

希望它会有所帮助

答案 4 :(得分:0)

这些非常适合从字符串中读取左/右“n”个字符,但是,至少在BBC BASIC中,LEFT$()RIGHT$()函数允许您更改左/右“n “也是人物......

E.g:

10 a$="00000"
20 RIGHT$(a$,3)="ABC"
30 PRINT a$

会产生:

00ABC

编辑:自写这篇文章以来,我已经提出了自己的解决方案......

def left(s, amount = 1, substring = ""):
    if (substring == ""):
        return s[:amount]
    else:
        if (len(substring) > amount):
            substring = substring[:amount]
        return substring + s[:-amount]

def right(s, amount = 1, substring = ""):
    if (substring == ""):
        return s[-amount:]
    else:
        if (len(substring) > amount):
            substring = substring[:amount]
        return s[:-amount] + substring

要返回您要调用的n个字符

substring = left(string,<n>)

如果未提供,则默认为1。右()

也是如此

更改您要调用的字符串的左或右n个字符

newstring = left(string,<n>,substring)

这将获取substring的前n个字符并覆盖string的前n个字符,并在newstring中返回结果。同样适用于right()。

答案 5 :(得分:0)

这是安迪的解决方案。我刚刚解决了User2357112的问题,并给出了有意义的变量名称。我是一名Python新手并且更喜欢这些功能。

#!/bin/bash

ipAddresses = 'ifconfig | awk -v OFS=": " -v RS= '$1!="lo" && split($0, a, /inet addr:/) > 1{sub(/ .*/, "", a[2]); print $1, a[2]}''

echo -e "Sus direcciones IP son: \n " $(ipAddresses)

答案 6 :(得分:0)

如果您要查找布尔结果,则Python中有用于“向右”和“向左”的内置函数。

str = "this_is_a_test"
left = str.startswith("this")
print(left)
> True

right = str.endswith("test")
print(right)
> True

答案 7 :(得分:0)

根据上面的评论,似乎可以重构 Right() 函数以更好地处理错误。这似乎有效:

def right(s, amount):
    if s == None:
        return None
    elif amount == None:
        return None # Or throw a missing argument error
    s = str(s)
    if amount > len(s):
        return s
    elif amount == 0:
        return ""
    else:
        return s[-amount:]

print(right("egg",2))
print(right(None, 2))
print(right("egg", None))
print(right("egg", 5))
print("a" + right("egg", 0) + "b")