Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Python中多次获得两个标记之间的子字符串?_Python_String_Substring - Fatal编程技术网

如何在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']