web-dev-qa-db-ja.com

Python:BASICのmid、right、leftに相当するものはありますか?

私はこのようなことをしたい:

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

助けて!

25

救助へのスライス:)

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

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

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

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

18
frnhr

おかげでアンディ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
Stanton Attree

このメソッドを使用することもできます

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]

それが役立つことを願っています

1
user6474469

ブール結果を探している場合、「右」と「左」のPythonには組み込み関数があります。

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

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

これがアンディのソリューションです。 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]
0
Jim Sullivan

これらは、文字列から左/右の「n」文字を読み取るのに最適ですが、少なくともBBC BASICでは、LEFT$()およびRIGHT$()関数を使用して、左/右の「n」文字も変更できます。 ...

例えば。:

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です。同じことがright()にも当てはまります

呼び出す文字列の左または右のn文字を変更するには

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

これは、部分文字列の最初のn文字を取り、文字列の最初のn文字を上書きし、結果をnewstringで返します。同じことがright()でも機能します。

0
Gareth Lock