我有以下代码:
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)但它只打印了“雷霆之力”很多次。我希望它能找到“雷霆之力”和“哥斯拉vs.孔”,并将这两个分别打印一次。怎么做?
发布于 2021-04-22 06:59:24
您可以使用regex
import re
s = '''alt="Thunder Force"/>ehkjehkljhiflealt="Godzilla vs. Kong"/>'''
x = re.findall(r'alt="(.*?)"/>', s)
print(x)输出
['Thunder Force', 'Godzilla vs. Kong']发布于 2021-04-22 06:59:09
使用regex和re.findall()
s = '''alt="Thunder Force"/>ehkjehkljhiflealt="Godzilla vs. Kong"/>'''
print(re.findall(r'(?<=alt\=").*?(?="/>)', s))
#['Thunder Force', 'Godzilla vs. Kong']发布于 2021-04-22 07:14:36
下面是一个非正则表达式的解决方案,它看起来更像我认为您试图通过发布的尝试实现的目标:
start = 0
while True:
start = s.find('alt="', start)
if start == -1:
break
start += len('alt="')
end = s.find('"/>', start)
if end == -1:
break
substring = s[start:end]
start = end
print(substring)https://stackoverflow.com/questions/67204467
复制相似问题