在Python中切片字符串

时间:2010-12-12 19:18:06

标签: python string

当我们需要在特定位置切片时,我们需要知道我们想要的索引。

例如,在字符串中:

>>> s = 'Your ID number is: 41233'

我想从:开始切割字符串并获取数字。

当然,我可以计算在哪个索引:然后切片,但这真的是一个很好的方法吗?

当然我可以做s.index(':')。但这将是一个额外的步骤,所以我想出了类似的东西:

>>> print s[(s.index(':')+2):]
41233

但不知怎的,我不喜欢它的外观。

所以我的问题是,给定一个你要切片的长字符串,你如何以最简单,最易读的方式找到从哪里开始切片的索引?如果有口头的伎俩,我很想知道。

6 个答案:

答案 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]