我有类似如下条目:如何获得两个分隔符巨蟒之间串
"<![CDATA[Lorem ipsum feed for an interval of 30 seconds]]>"
如何获得最里面的方括号中的字符串即“Lorem存有饲料30秒的时间间隔”
其中一些条目是普通字符串,有些是由[]如上
我有类似如下条目:如何获得两个分隔符巨蟒之间串
"<![CDATA[Lorem ipsum feed for an interval of 30 seconds]]>"
如何获得最里面的方括号中的字符串即“Lorem存有饲料30秒的时间间隔”
其中一些条目是普通字符串,有些是由[]如上
使用string.See的分割方法中的下面的代码段。
string = "<![CDATA[[[[[Lorem ipsum feed for an interval of 30 seconds]]]]]]]>"
inner_str = string.split('[')[len(string.split('[')) -1 ].split(']')[0]
print inner_str
不错!只是第二行可以写在一个更好的方法:'inner_str = string.split( '[')[ - 1] .split( ']')[0]' – Hossein
商定Hossien。 –
可以使用什么是在答复中提到,以this question,但为了得到最内层的字符串,你将有分隔的递归称之为。
修改接受的答案,你可以使用以下实现它:
def find_inner(s):
temp = s.partition('[')[-1].rpartition(']')[0]
if not temp:
return s
return find_inner(temp)
我相信这不会涵盖OP使用案例中的一些角落案例,例如,数据可能包含不平衡的括号。 –
使用正则表达式:
import re
string = '<![CDATA[Lorem ipsum feed for an interval of 30 seconds]]>'
reverse = string[::-1]
start = len(string)-re.search(r'\[', reverse).start()
end = re.search(r'\]', string).start()
print(string[start:end])
你应该找到最后[
和第一]
之间的文本。在上面的代码中,我使用re.search()
函数来查找第一次出现的字符。找到]
的第一个匹配项是可以的。但要找到[
最后一次出现,我扭转串并发现它的第一次出现(位置由len(string)
减去,因为它是落后的索引)。
最佳显示每一个在您的文章 – Roelant
可能的选项之一能有之前或之后的'<![CDATA [...]]>'是什么?如果没有,你可能只用一个片'[9:-3] [?如何找到了两个特殊字符的字符串]' –
的可能的复制(http://stackoverflow.com/questions/14716342/how-do -i-find-the-string-between-two-special-characters) – Mayazcherquoi