我可以有这样的字符串:
movie = '007: Spectre English Trailer #3 2015'
or
007: Spectre (2015) English Trailer
or
007: Spectre 2015 Trailer 2
etc.
目前我有下一段代码:
lang = 'english'
year = 2015
video_type = 'trailer'
num = 3 # for example '3', but can be any
my_list = []
if re.search(video_type+r'\s+((?#|№)['+str(num)+']\D)', movie, re.IGNORECASE):
my_list.append(movie)
检查字符串中是否存在video_type
和num
预告片。
如何将lang
和year
添加到正则表达式,以检查lang
,year
,video_type
和num
是否在一起串?换句话说,我需要检查字符串是否包含所有这些变量。
有些想法:
if (lang in movie) and (year in movie) and (video_type in movie) and (num in movie):
my_list.append(movie)
所有这些变量都可以在字符串的随机位置(video_type
和num
除外,因为它们总是彼此靠近,上面的代码可以正常工作)。
尝试过这样的事情:
答案 0 :(得分:0)
您的评论表明您真正关心的是字符串中的任何地方都存在以下字段:
lang
year
video_type num
或video_type #num
或video_type №num
您应该使用正则表达式来检测最后一个,但其他人应该只是一个简单的in
检查。
m = movie.casefold() # .lower() in earlier versions before 3.3
if all([lang in m,
year in m,
re.search(r"{} (?:#|№)?{}(?=\D|$)".format(video_type, num), m)]):
# do something
这相当于:
if lang in m and year in m and re.search(r"{} (?:#|№)?{}(?=\D|$)".format(video_type, num), m):
但是更具可读性