当我们需要在特定位置切片时,我们需要知道我们想要的索引。
例如,在字符串中:
>>> s = 'Your ID number is: 41233'
我想从:
开始切割字符串并获取数字。
当然,我可以计算在哪个索引:
然后切片,但这真的是一个很好的方法吗?
当然我可以做s.index(':')
。但这将是一个额外的步骤,所以我想出了类似的东西:
>>> print s[(s.index(':')+2):]
41233
但不知怎的,我不喜欢它的外观。
所以我的问题是,给定一个你要切片的长字符串,你如何以最简单,最易读的方式找到从哪里开始切片的索引?如果有口头的伎俩,我很想知道。
答案 0 :(得分:3)
也许您可以使用split()
:
>>> s = 'Your ID number is: 41233'
>>> print s.split(":")[1].strip()
41233
答案 1 :(得分:3)
text, sep, number = 'Your ID number is: 41233'.partition(':')
print number
也有效。但如果分隔符不在字符串中,它不会失败。
拆包也适用于拆分:
text, number = 'Your ID number is: 41233'.split(':',1)
答案 2 :(得分:1)
另一种方法是'Your ID number is: 41233'.split(':')[1].strip()
。
答案 3 :(得分:0)
所以我的问题是,给定一个你要切片的长字符串,你如何以最简单,最易读的方式找到从哪里开始切片的索引?
当“开始切片的地方”是一个特定的符号时,你不会;相反,你只需将Python作为split
用该符号作为分隔符,或partition
将其作为符号之前/之内/之后的位,就像在其他答案中一样。 (如果找到多个分隔符,split
可以将字符串分成几个部分; partition
将始终给出三个部分,即使符号根本不存在。)
如果有口头的伎俩,我很想知道。
我真的不认为你的意思是“orally”。 :)
答案 4 :(得分:0)
除非你有其他令人信服的理由,否则我根本不会使用切片。相反,这听起来像标准库中re
正则表达式模块的完美工作。以下是使用它来解决问题的示例:
import re
compile_obj = re.compile(r'Your ID number is:\s(?P<ID>\d+)')
s = 'Your ID number is: 41233'
match_obj = compile_obj.search(s)
if match_obj:
print match_obj.group('ID')
# 41233
答案 5 :(得分:0)
最近遇到了分区
string = "Your ID number is: 41233"
string = string.partition(':')
print string[2]