【问题标题】:how to extract portion of a string between two substrings in a multiline string in python如何在python中的多行字符串中提取两个子字符串之间的字符串部分
【发布时间】:2018-06-13 09:34:58
【问题描述】:

我正在尝试提取两个字符串标识符之间的字符串部分。如果在第一行进行搜索,则该技术有效,但不适用于其他行中的子字符串。

字符串是这样的:

mystring="""abc jhfshf iztzrtzoi hjge);
kjsyh ldjfsj sjsdgj sodfsd);
sjfhsdvh isdjgdfg sdgjhg isjdgg);
ghdcbnv jgdfkjg fdjgjfdgj);
vgdfnkvgfd dfgjfdjgjöfd);
end"""

到目前为止,我有以下代码。

startString='jhfshf'
endString=';'
search_var=mystring[mystring.find(startString)+len(startString):mystring.find(endString)]
print(search_var)

我得到了正确的输出,例如iztzrtzoi hjge)

但是如果我在第二行搜索一个字符串,比如(startString=ldjfsj),它就不起作用。 body 可以提出一些修改建议吗?

【问题讨论】:

  • mystring.split('jhfshf')[1].split(';')[0](可以添加maxsplits来提高效率)

标签: python


【解决方案1】:

使用正则表达式。

演示:

import re
mystring="""abc jhfshf iztzrtzoi hjge);
kjsyh ldjfsj sjsdgj sodfsd);
sjfhsdvh isdjgdfg sdgjhg isjdgg);
ghdcbnv jgdfkjg fdjgjfdgj);
vgdfnkvgfd dfgjfdjgjöfd);
end"""

m = re.search("(?<=jhfshf).*?(?=\;)", mystring)
if m:
    print( m.group() )

输出:

 iztzrtzoi hjge)

【讨论】:

    猜你喜欢
    • 2013-01-31
    • 2013-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-15
    相关资源
    最近更新 更多