哪种方法是在python中获取字符串一部分的最佳方法?

时间:2019-01-17 08:43:01

标签: python

我学习python已有几个月了,我有一个问题。

示例我有一个字符串s='string_123',我需要从s中获取"123"

据我所知,python提供了一些方法:

这个问题看起来可能与:Python: Extract numbers from a string

但是,它主要将split()与正则表达式进行比较。我需要了解每种方法的详细信息。

s.split("_")[-1]
s.partition("_")[2]
s[7:]

那么哪种方法最好呢?还是我们有比其他更好的方法?

3 个答案:

答案 0 :(得分:2)

splitpartition之间的区别在于,partition仅在给定分隔符的第一次出现时分裂,并且也返回该分隔符本身。

split将返回一个字符串数组,该字符串根据给定分隔符的位置分隔该字符串,并且不将该分隔符包括在数组中。

采用字符串"a+b+c+d"

"a+b+c+d".split("+") # (= ["a", "b", "c", "d"])
"a+b+c+d".partition("+") # (= ("a", "+", "b+c+d"))

仅当您知道下划线恰好位于位置6时,才可以使用s[7:]。这也将在下划线之后返回所有内容,因此,假设我们要基于“ +”分割前面的字符串符号,知道加号在位置1上,我们将使用数组符号:

"a+b+c+d"[2:] # (= "b+c+d")

您可以将其与find结合使用:

i = "a+b+c+d".find("+")
"a+b+c+d"[i+1:] # ( = "b+c+d")

答案 1 :(得分:0)

您也可以这样做:

>>> import re
>>> re.findall(r'\d+', s)[0]
'123'

这使用正则表达式来识别字符串中的数字,并将其拆分为列表。 [0]选择出现在字符串中的数字的第一个实例。

答案 2 :(得分:0)

从任何方面来说,您都需要告诉它最好的信息,例如速度,内存使用量和复杂性。因此,这取决于您的需求。 例如,最简单的方法是使用:

s='string_123'
end = None
print(s[7:end])

如果您不知道_在哪里,请使用此

s='string_123'
index=0
for i in s:
   index=index+1
   if i=='_':
    break;


end = None
print(s[index:end])

用于分割字符串

print(s.split('_'))

代码在这里:https://repl.it/repls/LoneJuicyThings?folderId=