如何在Python中多次获得两个标记之间的子字符串?
我有以下代码:如何在Python中多次获得两个标记之间的子字符串?,python,string,substring,Python,String,Substring,我有以下代码: s = '''alt="Thunder Force"/>ehkjehkljhiflealt="Godzilla vs. Kong"/>''' for i in s: start = s.find('alt="') + len('alt="') end = s.find('"/>') substring = s[start:end] print(substrin
s = '''alt="Thunder Force"/>ehkjehkljhiflealt="Godzilla vs. Kong"/>'''
for i in s:
start = s.find('alt="') + len('alt="')
end = s.find('"/>')
substring = s[start:end]
print(substring)
但它只打印出“雷霆力量”很多次。我希望它能找到《雷霆力量》和《哥斯拉对金刚》,并分别打印这两本书。如何使用?使用
regex
和re.findall()
s=''alt=“Thunder Force”/>ehkjehkljhiflealt=“哥斯拉vs.孔”/>'
印刷品(关于findall(r’(?)’,s))
#[‘雷霆力量’、‘哥斯拉对金刚’]
您可以使用正则表达式
import re
s = '''alt="Thunder Force"/>ehkjehkljhiflealt="Godzilla vs. Kong"/>'''
x = re.findall(r'alt="(.*?)"/>', s)
print(x)
输出
['Thunder Force', 'Godzilla vs. Kong']
下面是一个非正则表达式的解决方案,它看起来更像是我认为您试图通过发布的尝试实现的:
start=0
尽管如此:
start=s.find('alt=“”,start)
如果开始==-1:
打破
start+=len('alt=“”)
end=s.find(“/>”,start)
如果end==-1:
打破
子字符串=s[开始:结束]
开始=结束
打印(子字符串)
您还可以使用[^”]+
匹配除“
之外的任何字符,如果您想至少匹配一个字符,则可以重复1+次
如果空匹配也可以,则可以使用*
而不是+
import re
s = '''alt="Thunder Force"/>ehkjehkljhiflealt="Godzilla vs. Kong"/>'''
x = re.findall(r'alt="([^"]+)"/>', s)
print(x)
输出
['Thunder Force', 'Godzilla vs. Kong']
谢谢,成功了!!谢谢,成功了!!
['Thunder Force', 'Godzilla vs. Kong']