首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Python中多次获取两个标记之间的子字符串?

如何在Python中多次获取两个标记之间的子字符串?
EN

Stack Overflow用户
提问于 2021-04-22 06:52:45
回答 4查看 36关注 0票数 1

我有以下代码:

代码语言:javascript
复制
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.孔”,并将这两个分别打印一次。怎么做?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2021-04-22 06:59:24

您可以使用regex

代码语言:javascript
复制
import re
s = '''alt="Thunder Force"/>ehkjehkljhiflealt="Godzilla vs. Kong"/>'''
x = re.findall(r'alt="(.*?)"/>', s)
print(x)

输出

代码语言:javascript
复制
['Thunder Force', 'Godzilla vs. Kong']
票数 1
EN

Stack Overflow用户

发布于 2021-04-22 06:59:09

使用regexre.findall()

代码语言:javascript
复制
s = '''alt="Thunder Force"/>ehkjehkljhiflealt="Godzilla vs. Kong"/>'''

print(re.findall(r'(?<=alt\=").*?(?="/>)', s))
#['Thunder Force', 'Godzilla vs. Kong']
票数 0
EN

Stack Overflow用户

发布于 2021-04-22 07:14:36

下面是一个非正则表达式的解决方案,它看起来更像我认为您试图通过发布的尝试实现的目标:

代码语言:javascript
复制
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)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67204467

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档