python - 如何从字符串中仅获取子字符串的第一个实例?
问题描述
我正在使用一些代码来检查文本文件中的一些信息,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在它完成获取它已经找到的第一个搜索键之间的信息后停止?
解决方案
简单的文本拆分提取对您有用吗?
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
推荐阅读
- azure - Azure 数据流/数据工厂错误处理
- excel - VBA 中的密码保护
- java - 如何使用 try 和 catch 继续运行程序
- ios - 为什么`func dataTask(with request:, completionHandler:`中传递给completionHandler的Data对象是空的?
- swift - dyld:库未加载:@rpath/GTMSessionFetcher.framework/GTMSessionFetcher SIGABRT
- html - 如何获取图像来自烧瓶中的 HTML
- matlab - 对于 2 个一阶 ODE 的系统,没有显示足够的输入参数错误
- rest - 从 Markdown 模板调用 Rest API
- asp.net - Dot Net Core 和 ASP.NET 的注销
- java - 有没有办法将所有日期序列化和反序列化为 UTC 毫秒?