我想从字符串的第三个字符开始获取一个新的字符串,直到末尾,例如myString[2:end]
。如果省略第二部分表示“到末尾”,那么如果省略第一部分,它是否从开头开始?
我有一个情况需要将一段PHP脚本翻译成Python,其中有很多使用了substr(string, beginning, LENGTH)
函数。
如果我选择Python的string[beginning:end]
,我就需要计算很多的结束索引,所以更简单的方法是使用string[beginning:][:length]
,这样可以省去很多麻烦。
str1='There you are'
>>> str1[:]
'There you are'
>>> str1[1:]
'here you are'
#To print alternate characters skipping one element in between
>>> str1[::2]
'Teeyuae'
#To print last element of last two elements
>>> str1[:-2:-1]
'e'
#Similarly
>>> str1[:-2:-1]
'e'
#Using slice datatype
>>> str1='There you are'
>>> s1=slice(2,6)
>>> str1[s1]
'ere '
>>>myString = 'Hello World'
>>>end = 5
>>>myString[2:end]
'llo'
>>>myString[:end]
'Hello'
如果在冒号中间也留下了它,你将得到一个最简单的子字符串,它将是第5个字符(从0开始计数,所以在本例中是空格):
>>>myString[end]
' '
使用硬编码的索引本身就很混乱。
为了避免这种情况,Python提供了一个内置对象slice()
。
string = "my company has 1000$ on profit, but I lost 500$ gambling."
final = int(string[15:19]) - int(string[43:46])
print(final)
>>>500
EARNINGS = slice(15, 19)
LOSSES = slice(43, 46)
final = int(string[EARNINGS]) - int(string[LOSSES])
print(final)
>>>500
a="Helloo"
print(a[:-1])
>>> Hello
a="I Am Siva"
print(a[2:])
OUTPUT:
>>> Am Siva
我有一个更简单的解决方案,使用for循环在字符串中查找给定的子字符串。 假设我们有两个字符串变量,
main_string = "lullaby"
match_string = "ll"
match_string_len = len(match_string)
for index,value in enumerate(main_string):
sub_string = main_string[index:match_string_len+index]
if sub_string == match_string:
print("match string found in main string")