从列表中筛选出一些项目,并在不同的蟒蛇存储阵列 [英] filter out some items from a list and store in different arrays in python
问题描述
我有一个包含一些字符串项的列表
i have a list which contains some string items
res = ["FAV_VENUE_CITY_NAME == 'Mumbai' & EVENT_GENRE == 'KIDS' & count_EVENT_GENRE >= 1",
"FAV_VENUE_CITY_NAME == 'Mumbai' & EVENT_GENRE == 'FANTASY' & count_EVENT_GENRE >= 1",
"FAV_VENUE_CITY_NAME =='Mumbai' & EVENT_GENRE == 'FESTIVAL' & count_EVENT_GENRE >= 1",
"FAV_VENUE_CITY_NAME == 'New Delhi' & EVENT_GENRE == 'WORKSHOP' & count_EVENT_GENRE >= 1",
"FAV_VENUE_CITY_NAME == 'Mumbai' & EVENT_GENRE == 'EXHIBITION' & count_EVENT_GENRE >= 1",
"FAV_VENUE_CITY_NAME == 'Bangalore' & FAV_GENRE == '|DRAMA|'",
"FAV_VENUE_CITY_NAME = 'Mumbai' & & FAV_GENRE == '|ACTION|ADVENTURE|SCI-FI|'",
"FAV_VENUE_CITY_NAME == 'Bangalore' & FAV_GENRE == '|COMEDY|'",
"FAV_VENUE_CITY_NAME == 'Bangalore' & FAV_GENRE == 'DRAMA' & FAV_LANGUAGE == 'English'",
"FAV_VENUE_CITY_NAME == 'New Delhi' & FAV_LANGUAGE == 'Hindi' & count_EVENT_LANGUAGE >= 1"]
我想遍历所有列表项和存储在不同的lists.Out放不同的值应该像
i want to iterate over all list items and store different value in different lists.Out put should like
FAV_VENUE_CITY_NAME = ['Mumbai','Bangalore','New Delhi']
EVENT_GENRE = ['KIDS','FANTASY','FESTIVAL','WORKSHOP','EXHIBITION']
FAV_GENRE = ['|DRAMA|','|ACTION|ADVENTURE|SCI-FI|','|COMEDY|','DRAMA']
FAV_LANGUAGE = ['English','Hindi']
count_on_field = ['EVENT_GENRE','EVENT_LANGUAGE']
直到但我想出了要为
Till yet what i came up to is
fields = [re.split(r'[(==)(>=)]', x)[0].strip() for x in re.split('[&($#$)]', res)]
fields = [x for x in list(set(fields)) if x]
o/p:fields = ['FAV_VENUE_CITY_NAME','EVENT_GENRE','FAV_GENRE','FAV_LANGUAGE','count_EVENT_GENRE','count_EVENT_LANGUAGE']
但没能获得所预期的。
But not able to get the expected one.
所以,请建议什么我缺少和需要do.An例子将是一个很大的帮助。
So please suggest what i am missing and need to do.An example will be a great help.
推荐答案
您可以试试下面的正则表达式,我使用正则表达式列表和搜索
方法进行匹配和 AST
格式化字符串(获取印地文
从'印地文'$模块C $ C>)afteral我用
uniquer
函数来获取列表的独特元素。
You can try regex as below, i used regex-list and search
method for matching and ast
module for formatting strings (for getting 'Hindi'
from "'Hindi'"
) afteral i used uniquer
function to get unique elements of list.
import re,ast
res = ["FAV_VENUE_CITY_NAME == 'Mumbai' & EVENT_GENRE == 'KIDS' & count_EVENT_GENRE >= 1",
"FAV_VENUE_CITY_NAME == 'Mumbai' & EVENT_GENRE == 'FANTASY' & count_EVENT_GENRE >= 1",
"FAV_VENUE_CITY_NAME =='Mumbai' & EVENT_GENRE == 'FESTIVAL' & count_EVENT_GENRE >= 1",
"FAV_VENUE_CITY_NAME == 'New Delhi' & EVENT_GENRE == 'WORKSHOP' & count_EVENT_GENRE >= 1",
"FAV_VENUE_CITY_NAME == 'Mumbai' & EVENT_GENRE == 'EXHIBITION' & count_EVENT_GENRE >= 1",
"FAV_VENUE_CITY_NAME == 'Bangalore' & FAV_GENRE == '|DRAMA|'",
"FAV_VENUE_CITY_NAME = 'Mumbai' & & FAV_GENRE == '|ACTION|ADVENTURE|SCI-FI|'",
"FAV_VENUE_CITY_NAME == 'Bangalore' & FAV_GENRE == '|COMEDY|'",
"FAV_VENUE_CITY_NAME == 'Bangalore' & FAV_GENRE == 'DRAMA' & FAV_LANGUAGE == 'English'",
"FAV_VENUE_CITY_NAME == 'New Delhi' & FAV_LANGUAGE == 'Hindi' & count_EVENT_LANGUAGE >= 1"]
FAV_VENUE_CITY_NAME = []
EVENT_GENRE = []
FAV_GENRE = []
FAV_LANGUAGE = []
count_on_field = []
pat =[ """FAV_VENUE_CITY_NAME[\s==]+(.*?)&""","""EVENT_GENRE[\s==]+(.*?)&""","""FAV_GENRE[\s==]+(.*?)(?:\s|&|$)""","""FAV_LANGUAGE[\s==]+(.*?)(?:\s|&|$)""","""count_(\w+)"""]
def matcher(st,indx,lst):
if re.compile(pat[indx]).search(st):
lst.append(re.compile(pat[indx]).search(s).groups()[0].strip())
def uniquer(l):
try:
return map(ast.literal_eval,list(set(l)))
except:
return list(set(l))
for s in res:
matcher(s,0,FAV_VENUE_CITY_NAME)
matcher(s,1,EVENT_GENRE)
matcher(s,2,FAV_GENRE)
matcher(s,3,FAV_LANGUAGE)
matcher(s,4,count_on_field)
print uniquer(FAV_GENRE),uniquer(FAV_LANGUAGE),uniquer(FAV_VENUE_CITY_NAME),uniquer(EVENT_GENRE),uniquer(count_on_field)
输出 -
['|DRAMA|', '|COMEDY|', '|ACTION|ADVENTURE|SCI-FI|', 'DRAMA'] ['Hindi', 'English'] ['New Delhi', 'Mumbai', 'Bangalore'] ['FESTIVAL', 'WORKSHOP', 'FANTASY', 'KIDS', 'EXHIBITION'] ['EVENT_GENRE', 'EVENT_LANGUAGE']
看到现场正则表达式<大骨节病> 演示 骨节病>。
这篇关于从列表中筛选出一些项目,并在不同的蟒蛇存储阵列的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!