繁体   English   中英

如何从 Python 中的字符串中提取 substring 3

[英]How to extract a substring from a string in Python 3

我正在尝试从 function 结果中提取 substring,但我无法找出使用 Python 去除必要字符串的最佳方法。

Output 示例:

[<THIS STRING-STRING-STRING THAT THESE THOSE>]

在这个例子中,我想抓住“STRING-STRING-STRING”并扔掉output的所有rest。 在此示例中,“[<THIS " &" THAT THESE THOSE>]”是 static。

如果通过 '"[<THIS " &" THAT THESE THOSE>]" 是静态的',您的意思是它们始终是完全相同的字符串,那么:

s = "[<THIS STRING-STRING-STRING THAT THESE THOSE>]"
before = len("[<THIS ")
after = len(" THAT THESE THOSE>]")
s[before:-after]
# 'STRING-STRING-STRING'

像这样(只要字符串中字符的位置不变):

myString = "[<THIS STRING-STRING-STRING THAT THESE THOSE>]"
myString = myString[7:27]

很多很多方法来解决这个问题。 这里有两个例子:

第一个是简单替换不需要的字符。

targetstring = '[<THIS STRING-STRING-STRING THAT THESE THOSE>]'

#ALTERNATIVE 1
newstring = targetstring.replace(r" THAT THESE THOSE>]", '').replace(r"[<THIS ", '')
print(newstring)

这会删除除目标模式之外的所有内容:

#ALTERNATIVE 2
match = "STRING-STRING-STRING"
start = targetstring.find(match)
stop = len(match)
targetstring[start:start+stop]

这些可以缩短,但认为将它们写出来可能对 OP 有用。

我发现这非常有用,可能对您也有帮助: https://www.computerhope.com/issues/ch001721.htm

另一种替代方法;

import re
my_str = "[<THIS STRING-STRING-STRING THAT THESE THOSE>]"
string_pos = [(s.start(), s.end()) for s in list(re.finditer('STRING-STRING-STRING', my_str))]
start, end = string_pos[0]
print(my_str[start: end + 1])
STRING-STRING-STRING

如果STRING-STRING-STRING在字符串中多次出现,则每次出现的开始和结束索引将作为string_pos中的元组给出。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM