我在学习的过程中遇到了一些障碍。我正在尝试在字典中搜索输入的字符串。
示例:我想通过此搜索“S * 1 *显示标题”来播放节目的一个季节的所有剧集。我希望它显示S.01 E.01 Show Title S.01 E.02 Show Title ... S.01 E.10 Show Title。
我可以通过输入“显示标题”来显示所有标题,但这也会带来第2季,第3季和其他内容。
@app.route('/title', methods=['GET', 'POST'])
def showIPTitle():
savelist = []
savelen = str(len(savelist))
savedlist = [ipheader]
if request.method=='POST':
catTitle=request.form['title'].lower()
savedOp=request.form['titlesaveOp']
saveloc = saveLocat+'title'+catTitle+'.'+timeString+'.csv'
if len(catTitle) > 3:
for k, v in Content.items():
if re.search(catTitle,str(v['assetName'].lower())):
asstitle = str(v['assetName'])
assstart = (v['LicenseWindowStart'])[8:18]
assend = (v['LicenseWindowEnd'])[8:18]
providerid = (v['ProviderID'])
asssetid = (v['AssetID'].upper())
categories = (v['categories'])
savelist.append([asssetid,providerid,asstitle,categories,assstart,assend])
savedlist.append([asssetid,providerid,asstitle,categories,assstart,assend])
savelen = str(len(savelist))
if savelen > 1:
if savedOp== 'yesSave':
savedfile = open(saveloc, 'w')
swriter = csv.writer(savedfile, delimiter = '|')
swriter.writerows(savedlist)
savedfile.close()
else:
savedOp =="no"
else:
onstorefront = 'No'
asstitle = 'NOT FOUND'
assstart = 'NOT FOUND'
assend = 'NOT FOUND'
providerid = 'NOT FOUND'
categories = 'NOT FOUND'
return render_template('Title.html',selected='search',
savedloc=saveloc,
saveOp=savedOp,
savelist=savelist,
savelen=savelen,
enteredID=catTitle,
header=header,
asstitle=asstitle,
assstart=assstart,
assend=assend,
providerid=providerid,
categories=categories,
method=request.method)
else:
return render_template('ipvodTitle.html',selected='search',savelen=savelen, savelist=savelist,header =header)
else:
print(6)
return render_template('ipvodTitle.html',selected='search',savelen=savelen, savelist=savelist,header =header)
我认为问题出在代码
中if re.search(catTitle,str(v['assetName'].lower())):
我也试过
if catTitle.lower() in v['assetName'].lower():
但我得到的结果相同。 “节目标题”会播放所有剧集和演出,“S * 1 *节目标题”不会带来什么
答案 0 :(得分:0)
好吧,说实话,我并没有真正阅读你的代码,这里有太多东西,但让我们专注于我认为你的实际问题:如何使用Python的通配符搜索
我知道的唯一方法是fnmatch
:
cassandra.nodetool
输出:
import fnmatch
data = ['foo', 'foobar', 'foo-bar', 'foo-oo-bar', 'foo-foo', 'foo-oo-foo']
for item in data:
print('{}: {}'.format(
item,
fnmatch.fnmatch(item, 'foo*bar')
))
请注意,不是说通配符与Regex真的不一样。除了通过任何Regex方法使用通配符外,不要这样做。