我有一个像这样的字符串:
rawString "sampleStringWithNumber/obj3453andBlabla"
我想实现这个:
newString = "obj3453"
我知道有很多相关问题,如果 obj3453 后面的下一个字符是静态的,那不会有问题,但不幸的是下一个字符可以是任何字母(单词) 并且也可以多于/少于 4 个数字。
那么是否可以做这样的事情:
def find_between( s, first, last ):
try:
start = s.index( first ) + len( first )
end = s.index( last, start )
return s[start:end]
except ValueError:
return ""
print ((find_between(rawString, "/","the_next_string_thats_not_a_number")))
基本上我想传递一个变量作为第二个参数,该变量可以是除数字之外的任何内容。
最佳答案
使用正则表达式!
>>> import re
>>> s = "sampleStringWithNumber/obj3453andBlabla"
>>> re.search(r'/(.*?\d+)', s).group(1)
'obj3453'
正则表达式 /(.*?\d+)
搜索斜杠,后跟由任意字符序列组成的组(非贪婪):.*?
,后跟任意数量的数字:\d+
。
re.search
返回一个匹配对象(或 None),第一个 .group
将是结果。在实际代码中,您可能应该首先测试是否发现了任何东西。
关于python - 字符串与下一个非数字字符之间的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36045059/