首页 > 解决方案 > 如何从字符串中仅获取子字符串的第一个实例?

问题描述

我正在使用一些代码来检查文本文件中的一些信息,extractedInfo在我的搜索条件searchKey和之间searchEndKey

data1 = mytextfile
searchKey = "https://cars/"
searchEndKey = "/ford/" 
extractedInfo = data1[data1.find(searchKey)+len(searchKey):data1.find(searchEndKey,data1.find(searchKey)+len(searchKey)+1)]

如果只有一个搜索键实例,它会按预期工作,但如果它有多个实例,那么它会抓取从第一个开始searchKey一直到最后一个结束的所有信息searchEndKey

例如,如果文本文件中有:

等等等等https://cars/123456/ford/等等等等

我的返回值为123456.

但如果文本文件中有:

等等等等https://cars/123456/ford/等等等等等等 https://cars/123456/ford/等等等等等等 https://cars/123456/ford/等等等等

我的返回值为: 123456/ford/ blah blah blah blah https://cars/123456/ford/ blah blah blah blah https://cars/123456

那么有没有一种方法可以告诉python在它完成获取它已经找到的第一个搜索键之间的信息后停止?

标签: pythonstring

解决方案


简单的文本拆分提取对您有用吗?

with open('a.txt', 'r') as myfile:
    data = myfile.read() # read your file into a string

searchKey = "https://cars/"
searchEndKey = "/ford/"

extracted = data.split(searchKey)[1].split(searchEndKey)[0]

这只会第一次出现。当然,对于很长的字符串来说效率不是很高。

输入:

blah blah https://cars/123456/ford/ blah blah blah blah https://cars/123456/ford/ blah blah blah blah https://cars/123456/ford/ blah blah

输出:

123456

推荐阅读