PYTHON查找子字符串”(DefinedBeginOfTheString)(任何子字符串,都无所谓)(DefinedEndOfTheString)

2024-09-30 16:21:40 发布

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

我有一个长的.txt文件,其中包含一些给定格式的参数列表。假设它看起来像这样:

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

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

这给我带来了一个问题,是否有某种方法可以告诉Python这样的事情:

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

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


Tags: 文件方法字符串txt列表参数格式replace
3条回答

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

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

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!")

使用Regexsub():https://docs.python.org/3/library/re.html#re.sub

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

相关问题 更多 >