在Python中切片字符串

在Python中切片字符串,python,string,Python,String,当我们需要在特定位置切片字符串时,我们需要知道要从何处开始的索引 例如,在字符串中: >>> s = 'Your ID number is: 41233' 我想从:开始对字符串进行切片并获取数字 当然,我可以数一数:是什么索引,然后切片,但这真的是一个好方法吗 当然我可以做一个s.index(':')。但这是一个额外的步骤,所以我想出了如下方法: >>> print s[(s.index(':')+2):] 41233 但不知为什么我不喜欢它的外观 所以我

当我们需要在特定位置切片字符串时,我们需要知道要从何处开始的索引

例如,在字符串中:

>>> s = 'Your ID number is: 41233'
我想从
开始对字符串进行切片并获取数字

当然,我可以数一数
是什么索引,然后切片,但这真的是一个好方法吗

当然我可以做一个
s.index(':')
。但这是一个额外的步骤,所以我想出了如下方法:

>>> print s[(s.index(':')+2):]
41233
但不知为什么我不喜欢它的外观


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

也许你可以使用
split()


也许您可以使用
split()


另一种方法是
“您的ID号是:41233”。拆分(“:”)[1]。strip()
另一种方法是
“您的ID号是:41233”。拆分(“:”)[1]。strip()

也行。但是如果分隔符不在字符串中,它不会失败

拆包也适用于拆分:

text, number = 'Your ID number is: 41233'.split(':',1)
也行。但是如果分隔符不在字符串中,它不会失败

拆包也适用于拆分:

text, number = 'Your ID number is: 41233'.split(':',1)
所以我的问题是,给定一个要切片的长字符串,如何以最简单和可读的方式找到从何处开始切片的索引

当“从何处开始切片”是一个特定的符号时,您不需要;相反,您可以像Python一样,使用该符号作为分隔符拆分字符串,或者像其他答案一样,将其拆分为符号前/内/后的位。(
split
可以在找到多个分隔符的情况下将字符串拆分为多个片段;
分区
将始终提供三个片段,即使符号根本不存在。)

如果有什么窍门可以用口述的话,我很想知道

我真的不认为你的意思是“:”)

所以我的问题是,给定一个要切片的长字符串,如何以最简单和可读的方式找到从何处开始切片的索引

当“从何处开始切片”是一个特定的符号时,您不需要;相反,您可以像Python一样,使用该符号作为分隔符拆分字符串,或者像其他答案一样,将其拆分为符号前/内/后的位。(
split
可以在找到多个分隔符的情况下将字符串拆分为多个片段;
分区
将始终提供三个片段,即使符号根本不存在。)

如果有什么窍门可以用口述的话,我很想知道


我真的不认为你的意思是“:”)

除非有其他令人信服的理由,否则我根本不会使用切片。相反,这听起来像是标准库中正则表达式模块的完美工作。下面是一个使用它解决问题的示例:

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
重新导入
compile\u obj=re.compile(您的ID号是:\s(?P\d+))
s='您的身份证号码是:41233'
匹配对象=编译对象搜索
如果匹配对象:
打印匹配对象组(“ID”)
# 41233

除非有其他令人信服的理由,否则我根本不会使用切片。相反,这听起来像是标准库中正则表达式模块的完美工作。下面是一个使用它解决问题的示例:

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
重新导入
compile\u obj=re.compile(您的ID号是:\s(?P\d+))
s='您的身份证号码是:41233'
匹配对象=编译对象搜索
如果匹配对象:
打印匹配对象组(“ID”)
# 41233

最近遇到了分区

string = "Your ID number is: 41233"

string = string.partition(':')

print string[2]

最近遇到分区

string = "Your ID number is: 41233"

string = string.partition(':')

print string[2]

有趣的这似乎好多了。如果我担心分隔符不存在,我可能会这样做:
print s.split(“:”[-1].strip()
,否则,我会将它放在try子句中。另外,如果有2个分隔符,这将为您提供拆分的最后一组。有趣。这似乎好多了。如果我担心分隔符不存在,我可能会这样做:
print s.split(“:”[-1].strip()
,否则,我会将它放在try子句中。此外,如果有2个分隔符,这将为您提供分割的最后一组。您还可以使用正则表达式。这取决于字符串的复杂程度。你也可以使用正则表达式。这取决于绳子有多复杂。