我想做类似这样的事情:
>>> mystring = "foo"
>>> print(mid(mystring))
帮帮我!
def left(s, amount):
return s[:amount]
def right(s, amount):
return s[-amount:]
def mid(s, offset, amount):
return s[offset:offset+amount]
right
函数。'asdf'[-0:] == 'asdf'
,而不是 ''
。 - user2357112amount
大于字符串 s
的字符数,left() 和 right() 可能会返回错误。 - user96931mid()
函数必须被下面的答案所替换。 - user96931如果我记得我的 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
谢谢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()函数运行正常。谢谢。
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]
希望这对您有所帮助
这是安迪的解决方案。我只是解决了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]
str = "this_is_a_test"
left = str.startswith("this")
print(left)
> True
right = str.endswith("test")
print(right)
> True
这些对于从字符串中读取左/右“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
substring = left(string,<n>)
如果未提供,则默认为1。right()同样适用于此。
要更改字符串的左侧或右侧n个字符,您需要调用:
newstring = left(string,<n>,substring)
这将获取子字符串的前n个字符,并覆盖字符串的前n个字符,将结果返回到newstring中。right()函数同理。
根据上面的评论,似乎可以重构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")
mid
жҳҜд»Җд№Ҳж„ҸжҖқпјҹ - mgilsonmid
、left
和right
需要额外的参数,对吧? - alecxe