如何从字符串中仅获取子字符串的第一个实例?

2024-04-29 20:04:48 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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结束的所有信息。你知道吗

例如,如果文本文件中包含:

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

我的返回值是123456。你知道吗

但如果文本文件中有:

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/ford/ blah blah blah blah https://cars/123456/ford/ blah blah blah blah https://cars/123456

那么,有没有一种方法可以让python在获取完已经找到的第一个搜索键之间的信息之后停止呢?你知道吗


Tags: 实例代码https信息lenfindcarsblah
2条回答

您还可以使用re.search()对regex执行此操作。比如:

import re

s = 'blah blah https://cars/123456/ford/ blah blah blah blah https://cars/123456/ford/ blah blah blah blah https://cars/123456/ford/ blah blah'

patt = re.compile(r'https:\/\/cars\/([^\/]*)\/ford\/')
result = patt.search(s)

print(result.group(1))
# OUTPUT
# 123456

一个简单的文本分割提取对你有用吗?你知道吗

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

相关问题 更多 >