PYTHON - 查找子字符串"(DefinedBeginOfTheString)(anySubstring, it doesnt matter)(DefinedEndOfTheString)"



我有一个很长的。txt文件,其中包含一些给定格式的参数列表。我们设它是这样的:

oneParameter = "definedStartSequenceOfTheParameter" + str(actualValueOfTheParameter) + "definedEndSequenceOfTheParameter"

我的问题是我想替换值actualValueOfTheParameter。但是我不能使用.replace方法,因为我从来没有真正知道actualValueOfTheParameter的值-它可以是字符串,10位浮点数或2位整型,任何你能想到的值。

这给我带来了一个问题,是否有一些方法可以告诉Python这样的东西:

查找以"definedStartSequenceOfTheParameter"开始并以"definedEndSequenceOfTheParameter"结束的字符串,而不管在开始和结束字符串之间有多少或哪些字符。

我知道我可以定义一些包含for循环的函数,但首先我想听听你的意见。所以我不会朝自己的腿开枪,以防存在一些我不知道的简单方法或逃生顺序。

使用正则表达式sub(): https://docs.python.org/3/library/re.html#re.sub

s = "knownbeginKJLKYLHLKHDLLKDLBKBDKBknownend"
re.sub(r"(knownbegin).+(knownend)", r"1" + replacenment + r"2", s)

要构建C14L答案,请使用正则表达式。构建一个好的正则表达式的简单工具是regex101

这里有一个简单的解决方案,我想你可以自己弄清楚如何从文件中读取文本。

import re
testString = "definedStartSequenceOfTheParameterTheSpecificParameterdefinedEndSequenceOfTheParameter"
m = re.search('(?<=definedStartSequenceOfTheParameter)(.*)(?=definedEndSequenceOfTheParameter)',testString)
print(m.group(0))

输出:

TheSpecificParameter

您可以尝试str.startswith()str.endswith()方法。

的例子:

string = "Hello"
if string.startswith("H") and string.endswith("o"):
print("Yay!")
else:
print("Nay!")

相关内容

最新更新