从搜索查询中查找字段名称

时间:2015-11-12 08:44:24

标签: python arrays string pandas dataframe

我有一个where条件查询。我想在where条件中创建一个包含这些字段的数据帧。 问题是如何从where条件中提取这些字段。

我尝试使用rstrip,lstrip.But在任何运算符(如==,> =,&,/)之前找到字符串之类的东西仍然没有成功。我相信一些字符串搜索方法会做到这一点,但我没有得到它。  我的条件是什么

whereFields == "CITY_NAME == 'city1' & EVENT_GENRE == 'KIDS' & count_EVENT_GENRE >= 1$#$FAV_VENUE_CITY_NAME == 'city1' & EVENT_GENRE == 'FANTASY' & count_EVENT_GENRE >= 1$#$CITY_NAME == 'city1' & EVENT_GENRE == 'FESTIVAL' & count_EVENT_GENRE >= 1$#$CITY_NAME == 'city1' & EVENT_GENRE == 'WORKSHOP' & count_EVENT_GENRE >= 1$#$CITY_NAME == 'city1' & EVENT_GENRE == 'EXHIBITION' & count_EVENT_GENRE >= 1$#$CITY_NAME == 'city1' & FAV_GENRE == '|DRAMA|'$#$CITY_NAME == 'city1' &  & FAV_GENRE == '|ACTION|ADVENTURE|SCI-FI"

我希望涉及字段名称。就像我的数据框应该包含所有唯一列一样。 任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

import re    
res = [re.split(r'[(==)(>=)]', x)[0].strip() for x in re.split('[&($#$)]', whereFields)]

似乎有效。现在你可能想要独特的,但没有空字段:

res = [x for x in list(set(res)) if x]

答案 1 :(得分:1)

In [98]:
pd.DataFrame(data = pd.Series(re.findall('\w+ *(?==|<|>)' , whereFields)).unique() , columns = ['fields'])
Out[98]:
    fields
0   CITY_NAME
1   EVENT_GENRE
2   count_EVENT_GENRE
3   FAV_VENUE_CITY_NAME
4   FAV_GENRE