[英]How to substring a string Python from a specific index in Python?
在Python中从特定字符开始对字符串进行子字符串化的最佳方法是什么?
例如,如果val = "s2*20"
,如何获取*
之后的val
子字符串。 结果应为res = 20
。
PS:我们假设所有字符串都包含*
且长度不同。 但是,我们不知道*
的确切索引。
>>> val = 's2*20'
>>> val.split('*')[1]
'20'
根据您的需要,您可能要检查字符串中的'*'
,或者只是在首次出现'*'
之后取所有内容,但是如果没有更多信息,很难猜测。 这可能是一个合理的方案:
>>> def rest(s):
... return s.split('*',1) if '*' in s else s
...
>>> rest('hi')
'hi'
>>> rest('hi there * wazzup * man')
['hi there ', ' wazzup * man']
编辑:正如@Jon在评论中指出的(不,不是Skeet),使用partition
在每种方式上都更好。
>>> val = 's2*20'
>>> val.partition('*')[2]
'20'
>>> val = 's2-20'
>>> val.partition('*')[2]
''
它更平滑,表现出奇的好-实际上比split
好很多:
>>> import timeit
>>> timeit.timeit('"s2*20".split("*")')
0.22846507105495942
>>> timeit.timeit('"s2-20".split("*")')
0.1685205617091654
>>> timeit.timeit('"s2*20".partition("*")')
0.1475598294296372
>>> timeit.timeit('"s2-20".partition("*")')
0.09512975462482132
在这种情况下:
val[val.index('*')+1:]
找到*
的第一个出现位置,然后从那里切一个切片。
要么:
val.split('*', 1)[-1]
如果您想要在第一个*
之后的所有内容,则使用分隔符告诉字符串仅拆分一次。
使用str.split
:
>>> val = "s2*20"
>>> res = val.split("*")[1]
>>> res
'20'
使用str.index
:
>>> val[val.index("*")+1:]
'20'
使用re.findall
:
>>> re.findall("\*(\d+)", val)[0]
'20'
您可以使用str.index
来获取星号的索引,然后使用索引来对整个字符串进行子字符串化。
s = "s2*20"
ind = s.index('*')
substring = s[ind+1:]
因此,如果您得到一个像var =“ s s s * s * 20”这样的字符串,那么您想要*吗? 如果您在String中具有*序列的准确索引,我认为这可能是这样的:
string_test = "var num=s*s*t*15"
# In case you want the substring after the last *
sub_string = string_test[string_test.rindex('*') + 1:]
print sub_string
如果您确定字符在字符串中,则我最常使用的字符如下所示:
mystring=mystring[mystring.find('*'):]
这将从您的字符开始对字符串进行切片,而无需创建其他数据结构
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.