程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

【Python】通過構造樹結構解析查詢條件

編輯:Python

【Python】通過構造樹結構解析查詢條件

背景概述

最近遇到了需要解析類似這種東西的需求

名稱,摘要,主權項+=(育種 or 選育 or (培育 and (種 or 苗)) or 育苗) and (分類號=(A01K61% or A01G33% or A01K63%) or (名稱,摘要,主權項+=(刺參 or 海星 or 烏賊 or 扇貝 or 文蛤 or 鮑魚 or 蛤仔 or 贻貝 or 魁蚶 or 毛蚶 or 缢蛏 or (藻 not (海藻粉 or 硅藻土 or 藻酸)) or 蟹 or 蝦 or 水母 or 海螺 or 龜 or (魚 not (魚腥草 or 魚粉 or 魚雷 or 魚眼鏡頭)) or 鲨 or 鯨 or 豚 or 海蛇 or 海獅 or 海豹 or 鳗 or 鲷 or 魨 or 鲆 or 海參 or 海帶 or 海膽 or 水產 or 海鮮 or 大鲵 or 貝類 or 種貝 or 養魚 or 水生動物 or 螺類 or 海蝸牛 or 紫螺 or 釘螺 or 福壽螺 or 角螺 or 田螺 or 玉螺 or 泥螺 or 馬蹄螺 or 蝾螺 or 脈紅螺 or 香螺 or 金絲螺 or 海螂 or 牡蛎 or 蛤 or 蛏 or 蚌 or 羅非魚) and (分類號=('A01K67%' or 'A23K1%') or (名稱,摘要,主權項+=(養殖 or 飼養 or 栽養 or (養魚 not 營養魚) or 飼養 or 混養 or 諧養 or 喂養 or 暫養 or 籠養 or 馴養 or 育種 or 選育 or 培育 or 種苗 or 苗種 or 育苗 or 繁育 or 繁殖 or 飼料 or 餌料) and 分類號=('A01N%' or 'A01P%' or 'A61D19/%' or 'C12M3/%' or 'C12N5/%' or 'C12N15/%')) or 名稱=(養殖 or 飼養 or 栽養 or (養魚 not 營養魚) or 飼養 or 諧養 or 喂養 or 混養 or 暫養 or 籠養 or 馴養 or 育種 or 選育 or 培育 or 種苗 or 苗種 or 育苗 or 繁育 or 繁殖 or 飼料 or 餌料))))

我們需要將其中的分類號呀、名稱呀……等信息提取出來。看著它這一個一個的括號嵌套著,我就想著通過構造一棵樹來實。

樹結構

這是一棵根據需求自己構想的一棵樹,root為對應的expression,child為子節點,left/rightSibRelation表示兄弟節點之間的關系

class MyTree:
def __init__(self, value, lrelation=None, rrelation=None):
self.root = value
self.child = []
self.leftSibRelation = lrelation
self.rightSibRelation = rrelation
def insert(self, child_root, lrelation=None, rrelation=None):
self.child.append(MyTree(child_root, lrelation, rrelation))
def delete(self, i):
self.child.pop(i)
def print_tree(self, symbol_num):
print('{}root:{}, leftSibRelation:{}, rightSibRelation:{}, have_child:{}'.format('--' * symbol_num + '>',
self.root,
self.leftSibRelation,
self.rightSibRelation,
self.child != []))
if self.child:
for each in self.child:
each.print_tree(symbol_num + 1)
def get_just_child(self, is_need, content_list: list):
if not self.child:
print('content:{}, flag:{}'.format(self.root, is_need))
content_list.append({
'content': self.root, 'flag': is_need})
else:
for each in self.child:
each.get_just_child(is_need, content_list)
def last_second_node(self, condition, nodes, target):
if condition in self.root:
if self.child:
child_num = 0
for each in self.child:
if condition not in each.root:
child_num += 1
if self.leftSibRelation == 'not':
target = -target
if child_num == len(self.child): # 所有兒子都沒有關鍵字
nodes.append({
'object': self, 'target': target})
else:
for each in self.child:
if condition in each.root:
each.last_second_node(condition, nodes, target)
else:
if self.leftSibRelation == 'not':
target = -target
nodes.append({
'object': self, 'target': target})
def get_type_num(self, target, content_list):
if self.child:
for i, each in enumerate(self.child):
if each.leftSibRelation == 'not' or each.rightSibRelation == 'not':
# print(each.root)
if each.leftSibRelation == 'not':
target = -target
if target == -1:
print('get_type_num: content:{}, type:{}'.format(each.root, target))
else:
print('get_type_num: content:{}, type:{}'.format(each.root, target))
each.get_type_num(target, content_list)
elif each.leftSibRelation == 'and' or each.rightSibRelation == 'and':
# each.get_just_child(target, content_list)
each.get_type_num(target, content_list)
elif each.leftSibRelation == 'or' or each.rightSibRelation == 'or':
# each.get_just_child(target, content_list)
each.get_type_num(target, content_list)
else:
each.get_type_num(target, content_list)
else:
self.get_just_child(target, content_list)

具體解析代碼

def exp_parse(exp: str, condition):
tree = MyTree(None)
exp = exp.replace('(', '(').replace(')', ')')
if exp.startswith('(') and exp.endswith(')'):
flag = 1
for i in range(1, len(exp)):
if exp[i] == '(':
flag += 1
elif exp[i] == ')':
flag -= 1
if flag == 0:
if i < len(exp) - 1:
root = '({})'.format(exp)
print(root)
print('----------start-----------')
tree.root = root
get_child(root, tree)
break
elif i == len(exp) - 1:
root = exp
print(root)
print('----------start-----------')
tree.root = root
get_child(root, tree)
else:
root = '({})'.format(exp)
print(root)
print('----------start-----------')
tree.root = root
# get_child(root, final_list)
get_child(root, tree)
tree.print_tree(1)
# tree.get_child_by_root('分類號', 0, 1)
# tree.get_child_by_condition('not', 1)
# tree.get_type_num('not', 1)
print('+++++++++++++按條件查詢+++++++++++++')
nodes = list()
content_list = list()
tree.last_second_node(condition, nodes, 1)
for node in nodes:
# node.print_tree(1)
print(node['object'].root)
node['object'].get_type_num(node['target'], content_list)
return content_list
# 有時候首尾會出現少括號
def fix(child: str):
t1 = 0
t2 = 0
for c in child:
if c == '(':
t1 += 1
elif c == ')':
t2 += 1
if t1 < t2:
return '(' + child
elif t1 > t2:
return child + ')'
else:
return child
def get_child(root: str, tree: MyTree):
flag = 0
pre_node = -1
for index, s in enumerate(root):
# print(index)
if s == '(':
flag -= 1
if pre_node == -1:
pre_node = index + 1
elif s == ')':
flag += 1
if flag == 0 and index != 0:
child = root[pre_node: index]
if child != '':
if child[0] == '(' and pre_node != 1:
child = child[1:]
print('==- child')
child = fix(child)
print(child)
print('==- middle')
# if child == "(((((名稱,摘要,主權項+=(大蘇打a) or (名稱,摘要,主權項+=(大蘇打)) or 分類號=('b60%' or 'b62d%') or 主分類號=('g08g1/133%') or 分類號=('12-16%')) or (申請(專利權)人=(阿松大) or (申請(專利權)人=(阿松大) and 名稱,摘要,主權項+=(大蘇打)))) not (主分類號=(''a47%') or 分類號=('h01l29/786%' or 'h01l21/31%') or 申請(專利權)人=() or 名稱=(冰箱 or 存儲媒體))) or ((主分類號=('a47%') or 分類號=('h01l29/786%' or 'h01l21/31%') or 申請(專利權)人=( 中國鋼鐵股份有限公司) or 名稱=(冰箱 or 存儲媒體)) and (分類號=('b60%') or 主分類號=('g08g1/133%') or 名稱,摘要,主權項+=(大) or 名稱=(輪胎) or 申請(專利權)人=(卡車)))) not (名稱=(汽車游艇 or (飲料 and 運輸)) or (名稱=(資金) and 摘要=(銀行)) or 申請(專利權)人=(哈藥) or 主分類號=('sdad') or (分類號=('b61%') and (名稱,摘要+=(鐵路))) or 名稱,摘要,主權項+=(回到家撒)))":
# breakpoint()
operate(child, tree)
print('------------------')
pre_node = index + 1
def is_bracket_valid(expression: str):
flag = 0
for i, s in enumerate(expression):
if s == '(':
flag -= 1
elif s == ')':
flag += 1
if flag == 0:
return True
else:
return False
def get_bracket_num(expression: str):
nums = 0 # 抵消最開始的0
for i, s in enumerate(expression):
if s == '(':
nums += 1
return nums
# 構造樹
def operate(string: str, tree: MyTree):
index = []
# string = '(1 or (3)) and (5) not 6'
for i, s in enumerate(string):
if s == 'n' and string[i: i + 3] == 'not':
if is_bracket_valid(string[: i]) and is_bracket_valid(string[i + 1:]):
index.append({
'not': i})
# print(string[i: i + 3])
elif s == 'a' and string[i: i + 3] == 'and': # 運算優先級最低的作為主節點
if is_bracket_valid(string[: i]) and is_bracket_valid(string[i + 1:]):
index.append({
'and': i})
# print(string[i: i + 3])
elif s == 'o' and string[i: i + 2] == 'or':
if is_bracket_valid(string[: i]) and is_bracket_valid(string[i + 1:]):
index.append({
'or': i})
# print(string[i: i + 2])
# print(index)
# "(((((名稱,摘要,主權項+=(大蘇打a) or (名稱,摘要,主權項+=(大蘇打)) or 分類號=('b60%' or 'b62d%') or 主分類號=('g08g1/133%') or 分類號=('12-16%')) or (申請(專利權)人=(阿松大) or (申請(專利權)人=(阿松大) and 名稱,摘要,主權項+=(大蘇打)))) not (主分類號=(''a47%') or 分類號=('h01l29/786%' or 'h01l21/31%') or 申請(專利權)人=() or 名稱=(冰箱 or 存儲媒體))) or ((主分類號=('a47%') or 分類號=('h01l29/786%' or 'h01l21/31%') or 申請(專利權)人=( 中國鋼鐵股份有限公司) or 名稱=(冰箱 or 存儲媒體)) and (分類號=('b60%') or 主分類號=('g08g1/133%') or 名稱,摘要,主權項+=(大) or 名稱=(輪胎) or 申請(專利權)人=(卡車)))) not (名稱=(汽車游艇 or (飲料 and 運輸)) or (名稱=(資金) and 摘要=(銀行)) or 申請(專利權)人=(哈藥) or 主分類號=('sdad') or (分類號=('b61%') and (名稱,摘要+=(鐵路))) or 名稱,摘要,主權項+=(回到家撒)))"
# 括號數量大於等於1 且 序號列表為空
# 出現原因 ???
if index == [] and get_bracket_num(string) >= 1:
get_child(string, tree)
else:
index_list = []
for ind in index:
if 'not' in ind.keys():
index_list.append(ind['not'])
index_list.append(ind['not'] + 3)
elif 'and' in ind.keys():
index_list.append(ind['and'])
index_list.append(ind['and'] + 3)
elif 'or' in ind.keys():
index_list.append(ind['or'])
index_list.append(ind['or'] + 2)
index_list.append(len(string))
index_list.sort()
last = 0
result_list = list()
for inde in index_list:
# print('====截')
result = string[last: inde]
# print(str(result))
last = inde
if get_bracket_num(result) > 0:
result_list.append(result)
else:
result_list.append(result.replace(' ', ''))
if result_list:
for i, result in enumerate(result_list[::2]):
if len(result_list[::2]) == 1:
tree.insert(result, lrelation=None, rrelation=None)
elif i == 0:
tree.insert(result, lrelation=None, rrelation=result_list[i * 2 + 1])
get_child(result, tree.child[i])
elif i == len(result_list[::2]) - 1:
tree.insert(result, lrelation=result_list[i * 2 - 1], rrelation=None)
get_child(result, tree.child[i])
else:
tree.insert(result, lrelation=result_list[i * 2 - 1], rrelation=result_list[i * 2 + 1])
get_child(result, tree.child[i])
# final_list.append(result_list)
# print(result_list)
# print(demo.replace('=', ':').replace('(', '{').replace(')', '}'))
num = '((1(2)3((4)5(6)))7(((8(9)10(11))12(13))14((15)16)))17(18((19)20(21))22(23))'
s1 = '((分類號=(1) or 名稱,摘要,主權項+=((2) and (3))) and (((分類號=(4) or 名稱,摘要,主權項+=(5)) and 分類號=(6)) or 名稱,摘要,主權項+=((7) and 8))) not (分類號=((9) not (10)) or 名稱,摘要,主權項+=(11 or 12 or 13))'
# exp_parse(s1)
# exp_parse('((12)(3(4(5)))6(7))8((9)10(11)((12)not(13)))')
# exp_parse('(9)or(1 or 6)and((1 and 2)not(1 or 3))')
# exp_parse('((1 or (3)) and (5) not 6)')
# exp_parse(num)
# exp_parse(demo2)
# exp_parse('1 not (2 or 3 not (4 and 5 not 6))')
# print(get_bracket_num('((1 or (3)) and (5) not 6)'))
# exp_parse(s1)
# print_tree([['(1 or (3)) ', 'and', ' (5) ', 'not', '6'], ['1', 'or', ' (3)'], ['3'], ['5']], 1, '--')
if __name__ == '__main__':
string = "((名稱=(內飾 or 內部裝飾 or 儀表板 or 儀表盤 or 頂棚 or 轉向盤 or 方向盤 or 地墊 or 防滑墊 or 皮墊 or 座椅 or 車座 or 坐墊 or 靠背 or 安全帶 or 頭枕 or 靠枕 or 頸枕 or 頭部墊枕 or 氣囊 or 氣袋 or 窗簾 or 地毯 or 車頂 or 屋頂 or 屋蓋 or 頂棚 or 頂篷 or 椅背 or 座背 or 座墊 or 地板 or 門內板 or 門板 or 門內護板 or 門內襯板 or 立柱護板 or 腳墊 or 遮陽板 or 遮物簾 or 行李箱 or 遮陽簾 or 遮光簾 or 行李艙 or 發動機艙) or 名稱=((照明)and (車內 or 車輛內)) or 主分類號=('b60r13/02%' or 'b60r21/36%' or 'b60r21/232%' or 'b60k35/00%' or 'b60k37/00%' or 'b60k37/02%' or 'b60k37/04%' or 'b60r21/055%' or 'b60n2%' or 'b60r22%' or 'b60j3%' or 'b60r7/05%' or 'b62d1/04%')) and (((((((((((名稱,摘要,主權項+=(汽車 or 轎車 or 家用車 or 乘用車 or 兩廂車 or 三廂車 or 掀背車 or 旅行車 or 越野車 or 吉普車 or 賽車 or 私家車 or 家庭用車 or 敞篷車 or 跑車 or 多功能車 or 多用途車 or 專用車 or 新能源車 or 電動車 or 電動車 or 電機車輛 or 電動機車 or 混合動力車 or 油電混合車 or 油電混合車 or 清障車 or 消防車 or 郵政車 or 醫療車 or 罐車 or 攪拌車 or 掃路車 or 搶險車 or 運輸車 or 自卸車 or 貨車 or 掛車 or 客車 or 輕客 or 公交車 or 救護車 or 環衛車 or 電視廣播車 or 作業車 or 冷藏車 or 商用車 or 商務車 or 重型車 or 皮卡 or 輕卡 or 微卡 or 微客 or 牽引車 or 客貨兩用車 or 改裝車 or 房車 or 載貨車 or 載重車 or 工程車 or 整車 or 機動車 or 卡車 or 旅居車 or 警用車 or 微型車 or 小型車 or 緊湊型車 or 中型車 or 大型車 or 豪華車 or 長頭車 or 短頭車 or 平頭車 or 迎賓車 or 檢閱車 or 灑水車 or 掃雪車 or 殡喪車 or 垃圾車 or 垃圾裝運車 or 清掃車 or 消防用車 or 特種車 or 特種用途車 or 混凝土泵車 or 礦山車 or 礦用車 or 混凝土攪拌運輸車 or 車輛 or 汽配 or 加油車 or 電源車 or 四驅車 or 運鈔車) or (名稱,摘要,主權項+=(發動機 or 馬達 or 引擎 or 燃燒室 or 曲軸 or 氣缸 or 汽缸 or 缸體 or 缸蓋 or 活塞 or 歧管 or 油底殼 or 油濾清器 or 空氣濾清器 or 散熱器 or 壓力水箱蓋 or 機油泵 or 節溫器 or 增壓器 or 汽油泵 or 安全帶 or 剎車 or 轉向裝置 or 方向盤 or 輪毂 or 輪辋 or 輪輻 or 變速器 or 變速系統 or 減震器 or 減振器 or 懸掛系統 or 前懸掛 or 後懸掛 or 獨立懸掛系 or 懸掛裝置 or 板彈簧 or 葉片彈簧 or 螺旋彈簧 or 扭桿彈簧 or 油氣彈簧 or 平衡桿 or 避震器 or 避振器 or 後視鏡 or 導航 or 底盤 or 傳動系 or 離合器 or 變速箱 or 變速桿 or gearshift or 速率表 or 超速傳動 or 差速器 or 傳動軸 or 主動軸 or 四輪驅動 or 壓縮機 or 冷凝器 or 電池 or 隔膜 or 負極材料 or 陰極材料 or 正極材料 or 陽極材料 or 電解液 or 電機 or 電動機 or 電控 or 電氣控制 or 正時齒輪室蓋 or 油箱 or 消聲器 or 液力變矩器 or 制動器 or 制動系統 or 制動防抱死 or 制動總泵 or 制動分泵 or 制動油管 or 制動泵 or 制動片 or 制動盤 or 制動蹄 or 制動輪缸 or 制動鼓 or 摩擦片 or 制動鉗 or 制動襯塊 or 手剎線 or 轉向器 or 轉向機 or 轉向支架 or 轉向軸 or 轉向橋 or 轉向管柱 or 導向裝置 or 驅動板 or 油缸 or 雨刮器 or 安全氣囊 or 噴油器 or 噴油嘴 or 分動器 or 驅動橋 or 起動機 or 翼子板 or 前圍板 or 刮水器 or 電噴 or 電控燃油噴射 or 天窗 or 輪胎 or 胎冠 or 胎肩 or 胎側 or 胎體 or 胎圈 or 懸架 or 冷卻系統 or 前輪 or 後輪 or 司機座 or 客座 or 鹵素頭燈 or 照明裝置 or 信號裝置 or 保險裝置 or 渦輪增壓 or 透平增壓 or 渦輪機增壓 or 渦輪壓氣 or 透平壓氣 or 增壓渦輪 or 加壓渦輪 or 渦輪加壓 or 渦旋增壓 or 渦輪式增壓 or 渦旋式增壓 or 增壓器渦輪 or 增壓機渦輪 or 渦流增壓 or 消音器 or 尾氣淨化器 or 保險槓 or 柴油機 or 汽油機 or 內燃機 or 轎廂 or 行駛記錄儀 or 行車記錄儀 or 車用皮革 or 車用影音 or 車用塑料制品 or 車用五金制品 or 車頂蓋 or 車門 or 車窗 or 車前钣制件 or 車橋 or 車載電子監控 or 車載安全監測 or 車燈 or 車用儀表 or 車用工程塑料 or 車載故障診斷儀 or 防抱死 or 車載娛樂 or 助力裝置)) or 分類號=('b60%' or 'b62d%') or 主分類號=('g08g1/133%') or 分類號=('12-08%' or '12-10%' or '12-13%' or '12-15%' or '12-16%')) or (申請(專利權)人=(汽車 or 自動車株式會社 or 商用車 or 乘用車 or 輪胎 or 上汽 or '特斯拉汽' or 偉巴斯特 or 韋伯斯托 or 韋巴斯托 or 五十鈴 or 五十齡 or 弗裡特加德公司 or 弗利特加爾公司 or 德爾福 or 德爾菲 or 戴爾菲 or 特爾斐 or 采埃孚 or 漢默斯坦兩合有限公司 or 漢默斯坦兩合有限公司 or 凱波雷卡羅兩合公司 or 偉世通 or 佛吉亞 or 弗雷西亞 or 弗勒西娅 or 福爾西亞 or '埃姆肯技術德國(奧格斯堡)有限責任公司' or '貝特朗-富爾設備公司' or '排放控制技術德國(奧格斯堡)有限公司' or 伯純特福爾設備股份有限公司 or 伯特蘭福裡設備有限公司 or 法雷西亞 or 福羅西內 or 福雷奇亞 or 李斯特內燃機及測試設備公司 or avl裡斯脫有限公司 or avl利斯特有限責任公司 or fev發動機技術有限公司 or fev發動機技術有限責任公司 or fev電機技術有限公司 or fev有限公司 or 愛德克斯 or 阿基波羅 or 博格華納 or 阿茲米特 or 一汽 or 二汽 or 客車 or 轎車 or 家用車 or 旅行車 or 越野車 or 吉普車 or 賽車 or 清障車 or 消防車 or 郵政車 or 卡車 or 馬自達 or 汽配 or 廣東康盈交通設備制造有限公司 or 路之友 or 文燦壓鑄 or 中南鋁車輪 or 安馳鋁合金車輪 or 豹王濾芯 or 永力泰車軸 or 富華工程機械 or 陸地方舟 or 標致汽車 or 雪鐵龍汽車 or 標致雪鐵龍集團 or 南京金龍 or 眾泰) or (申請(專利權)人=(三菱 or 康明斯 or 卡明斯 or 電裝 or 伊頓 or 易通 or 伊登 or 尹頓 or 愛信 or 錦湖 or 固特異 or 倍耐力 or 皮雷利 or '英得斯特?皮裡公司' or 皮萊利 or 盧萊利 or 信耐力輪胎公司 or 鄧祿普 or 鄧洛普 or 普利司通 or 費爾斯通 or 布裡吉斯通 or 普利斯通 or 優科豪馬 or 橫濱橡膠 or 橫濱像膠 or 米其林 or 米凱林 or 米什蘭 or 米氏蘭 or 米基林 or 米什林 or 米勒 or 三洋 or 松下 or 索尼 or 三星 or 博通 or 賓尼法瑞納 or 喬治亞羅 or 意迪亞 or 裡卡多 or 裡查德 or 東機工 or 本田技研 or 博世 or 博施 or 博希 or 施博 or 通用 or 奔馳 or 豐田 or 本田 or 福特 or 大眾 or 現代 or 日產 or 戴姆勒 or 長安 or 富士重工 or 鈴木 or 寶馬 or 雷諾 or 菲亞特 or 克萊斯勒 or 法士特 or 綦江齒輪 or 江森自控 or 約翰遜控制 or 約翰遜控股 or 約翰遜內控 or '約翰遜?康特洛斯股份' or 約翰遜內部調節裝置兩合公司 or 佛山市邦普循環科技有限公司) and 名稱,摘要,主權項+=(汽車 or 轎車 or 家用車 or 乘用車 or 兩廂車 or 三廂車 or 掀背車 or 旅行車 or 越野車 or 吉普車 or 賽車 or 私家車 or 家庭用車 or 敞篷車 or 跑車 or 多功能車 or 多用途車 or 專用車 or 新能源車 or 電動車 or 電動車 or 電機車輛 or 電動機車 or 混合動力車 or 油電混合車 or 油電混合車 or 清障車 or 消防車 or 郵政車 or 醫療車 or 罐車 or 攪拌車 or 掃路車 or 搶險車 or 運輸車 or 自卸車 or 貨車 or 掛車 or 客車 or 輕客 or 公交車 or 救護車 or 環衛車 or 電視廣播車 or 作業車 or 冷藏車 or 掃路車 or 商用車 or 商務車 or 重型車 or 皮卡 or 輕卡 or 微卡 or 微客 or 牽引車 or 客貨兩用車 or 改裝車 or 房車 or 載貨車 or 載重車 or 工程車 or 整車 or 機動車 or 卡車 or 旅居車 or 警用車 or 微型車 or 小型車 or 緊湊型車 or 中型車 or 大型車 or 豪華車 or 長頭車 or 短頭車 or 平頭車 or 牽引車 or 迎賓車 or 檢閱車 or 灑水車 or 掃雪車 or 殡喪車 or 垃圾車 or 垃圾裝運車 or 清掃車 or 消防用車 or 特種車 or 特種用途車 or 混凝土泵車 or 礦山車 or 礦用車 or 混凝土攪拌運輸車 or 車輛 or 汽配 or 加油車 or 電源車 or 四驅車 or 運鈔車)))) not (主分類號=('b61%' or 'a63%' or e% or 'h04%' or 'b41%' or 'c12%' or 'a61%' or 'g09%' or 'd04h5/%' or 'c10%' or 'g06%' or 'g11%' or 'b08%' or 'c07%' or 'a41%' or 'b65f%' or 'a44%' or 'b66%' or 'b43%' or 'b64%' or 'a23%' or 'b28%' or 'g01n33/%' or 'c02%' or 'a45b%' or 'a01%' or 'c09d11/00%' or 'g02c%' or 'b63%' or 'c22%' or 'g08g1/017%' or 'h02g1/02%' or 'd06f%' or 'c30b%' or 'a47%') or 分類號=('h01l29/786%' or 'h01l21/31%') or 申請(專利權)人=(國家電網公司 or lg電子 or 樂金電子 or 松下知識產權經營株式會社 or 中華電信股份有限公司 or 東洋紡株式會社 or 由田新技股份有限公司 or 國立勤益科技大學 or 中國鋼鐵股份有限公司) or 名稱=(冰箱 or 存儲媒體))) or ((主分類號=('h04%' or 'd04h5/%' or 'g06%' or 'g11%' or 'b08%' or 'c07%' or 'a44%' or 'b28%' or 'b66%' or 'b63%' or 'c22%' or 'c30b%' or 'a47%') or 分類號=('h01l29/786%' or 'h01l21/31%') or 申請(專利權)人=(國家電網公司 or lg電子 or 樂金電子 or 松下知識產權經營株式會社 or 中華電信股份有限公司 or 東洋紡株式會社 or 由田新技股份有限公司 or 國立勤益科技大學 or 中國鋼鐵股份有限公司) or 名稱=(冰箱 or 存儲媒體)) and (分類號=('b60%') or 主分類號=('g08g1/133%') or 名稱,摘要,主權項+=(汽車 or 轎車 or 家用車 or 乘用車 or 兩廂車 or 三廂車 or 掀背車 or 旅行車 or 越野車 or 吉普車 or 賽車 or 私家車 or 家庭用車 or 敞篷車 or 跑車 or 多功能車 or 多用途車 or 專用車 or 新能源車 or 電動車 or 電動車 or 電機車輛 or 電動機車 or 混合動力車 or 油電混合車 or 油電混合車 or 清障車 or 消防車 or 郵政車 or 醫療車 or 罐車 or 攪拌車 or 掃路車 or 搶險車 or 運輸車 or 自卸車 or 貨車 or 掛車 or 客車 or 輕客 or 公交車 or 救護車 or 環衛車 or 電視廣播車 or 作業車 or 冷藏車 or 掃路車 or 商用車 or 商務車 or 重型車 or 皮卡 or 輕卡 or 微卡 or 微客 or 牽引車 or 客貨兩用車 or 改裝車 or 房車 or 載貨車 or 載重車 or 工程車 or 整車 or 機動車 or 卡車 or 旅居車 or 警用車 or 微型車 or 小型車 or 緊湊型車 or 中型車 or 大型車 or 豪華車 or 長頭車 or 短頭車 or 平頭車 or 迎賓車 or 檢閱車 or 灑水車 or 掃雪車 or 殡喪車 or 垃圾車 or 垃圾裝運車 or 清掃車 or 消防用車 or 特種車 or 特種用途車 or 混凝土泵車 or 礦山車 or 礦用車 or 混凝土攪拌運輸車 or 車輛 or 加油車 or 電源車 or 四驅車 or 運鈔車) or 名稱=(輪胎 or 車身 or 汽配 or 車輪 or 車用 or 車門 or 車窗) or 申請(專利權)人=(自動車 or 汽車 or 商用車 or 乘用車 or 上汽 or '特斯拉汽' or 一汽 or 二汽 or 客車 or 轎車 or 家用車 or 旅行車 or 越野車 or 吉普車 or 賽車 or 清障車 or 消防車 or 郵政車 or 卡車)))) not (名稱=(輪椅車 or 自行車 or 摩托車 or 三輪車 or 折疊車 or 嬰兒車 or 童車 or 推車 or 硬幣 or 貨幣 or 便器 or 馬桶 or 面部區域檢測 or 眼睑 or 面部器官 or 閉眼 or 積木 or 玩具 or 管家機器人 or 船 or 核電站 or 居家機器人 or 樓梯清潔機器人 or 航天 or 人力交通工具 or 購物車 or 課桌 or 暖瓶拖車 or 腳踏車 or 飛機 or 手推貨車 or 推車椅 or 自行小臥車 or 列車 or 火車 or 電視 or 衛生間 or 軌道車 or 有軌機車 or 電力機車 or 輕軌 or 手環 or 坩埚 or 自動掃描計數 or 家庭網絡 or 虹膜 or 家庭音頻 or 視頻網絡 or 鼠標 or 家居用 or led封裝 or 四輪旋轉車 or 下水道 or 井蓋 or 樓梯爬升輪椅 or 頭孢 or 葡萄園 or 交易 or 節目導視 or 洗衣機 or 公路車輛智能監測 or 垃圾桶 or 腫瘤 or 血液 or 電梯 or 餐車清洗機 or 微波爐 or 坦克車 or 踏腳四輪車 or 人力車 or 飛碟 or 飛行器 or 耕種機 or 鐵路 or 起重機 or 病毒 or 疾病 or 飼料罐 or 輪椅 or 太陽能電池 or 攝影 or 燒烤 or 嬰幼兒床車 or 健身娛樂清潔車 or 兒童小轎車 or 自助餐廳 or 學步車 or 手推清掃車 or 折疊式售貨車 or 洗碗機 or 手推售貨車 or 展台 or 賽車游戲 or 高爾夫球 or 水下航行 or 爬壁機器人 or 插秧機 or 手車 or 磷尾礦 or 履帶 or 燃料補貼 or 智行包 or 樂譜架 or 無人機 or 活動浴缸 or 滑板車 or 血糖 or 農機 or 農用 or 拖拉機 or 托拉機 or 交通控制系統 or 爬壁除銹噴漆機器人 or 兌鐵運輸車 or 有軌電車 or 兒童救生書包 or 冷水機組 or 樹修剪機 or 社會治安 or 混鐵車 or 手提式嬰兒器具 or 嬰兒吐奶 or 森林滅火 or 菜單按鈕 or 噴墨 or 油墨 or 郵資 or 樂器 or 售貨機 or 販賣機 or 挖掘機 or 電力系統 or 人字抱桿 or 電力巡檢 or 變電站 or 潛水艇 or 汽車艇 or 海運 or 水上 or 汽車游艇 or (飲料 and 運輸) or 衛生制品 or 制冰機 or 航空 or 燃氣輪機 or 公交客流信息采集 or 洗滌機 or 吸塵器 or 索道 or 泡菜 or 雙輪電動車 or 電瓶車 or 農業 or 室內機 or 投影儀 or 室外單元 or 室外機 or 兩輪車 or 二輪車 or 軌道載具 or 游戲機 or 壓路機 or 油田 or 石灰回轉窯 or 煙草 or 檔案 or 蟲草 or 茶具 or 真空注油機 or 蛋糕 or 叉車 or 升降車 or 天車 or 校園管理 or 路由 or 煙葉 or 租賃 or 藥品 or 采購 or 停車場管理 or 廣告 or 挖蒜機 or 竊取 or 有足車 or 卡件折扣 or 權限管理 or 借方卡 or 引線系統 or 翻譯質量 or 電子商務 or 嘧啶衍生物 or 個人簡檔 or 虛擬輔助 or 光調制器 or 掃描設備 or 音頻取樣 or 風力渦輪機 or 停車空間定位器 or 去除的二氧化碳 or rfid閱讀器 or 字符識別 or 珠光顏料 or 逐行游戲 or 無線生物持裝置 or 多語言系統 or 充氧器 or 開銷記帳 or 靶向激勵 or 身份防盜 or 資產監控 or 小區電話 or 智能機場 or 地震設備 or 獎勵節目 or 畜禽 or 高度確定裝置 or 交通光 or 農藥 or 中藥 or 膠卷 or 風力發電 or 輕型交通車輛 or 碰碰車 or 教學 or 食用菌 or 氣瓶車 or 指南車 or 板車 or 獨輪車 or 台車 or 壓力發電 or 搬運車 or 農具 or 軌道系統車輛 or 軌道車 or 軌道電車 or 軌道電動車 or 軌道上車輛 or 軌道交通 or 軌道卡子 or 軌道吊 or 軌道輸送 or 軌道小車 or 軌道類 or 跨騎式電動車 or 跨騎型電動車 or 跨騎型車 or 跨騎式車 or 鞍乘型電動車 or 鞍乘式電動車 or 鞍乘型車 or 鞍乘式車 or 車型識別 or 車型辨識 or 風車 or 鞍座-騎行電動車 or 鐵道 or 爬樓車 or 爬樓輪車 or 鞍座型車輛 or 跨坐型車輛) or (名稱=(資金) and 摘要=(貨幣 or 金融 or 銀行)) or 申請(專利權)人=(哈藥 or 制藥 or 餐飲 or 食品 or 阿斯特拉曾尼卡有限公司 or 聯合視頻制品公司 or 'vid衡器股份有限公司' or 'sms邏輯系統股份有限公司' or 'ig硬紙板科技有限公司' or 馬尼托瓦克起重機有限公司 or 佛山市神風航空科技有限公司 or 青島路博宏業環保技術開發有限公司 or 福建省邵武煤礦機具廠 or 重慶美的通用制冷設備有限公司 or 'tvs電機股份有限公司' or 煙草 or 廣東松下環境系統有限公司 or 廣州松下空調器有限公司 or 火車 or 童車 or 玩具 or 雅迪 or 捷安特 or 北京牛電科技有限責任公司 or 建德市五星車業有限公司 or 航天 or 航空 or 摩托車 or 浙江中煙工業有限責任公司 or 農機 or 農機 or 遼寧鑫豐礦電設備制造有限公司 or 挖掘機 or 潔具 or 軌道交通 or 船舶 or 豐泰企業管理顧問有限公司 or 上海明燕機械制造有限公司 or 微軟技術許可有限責任公司 or 廣州東軟科技有限公司 or 福建省民爆化工股份有限公司 or '馬爾科?帕帕利亞' or 電梯 or 陶瓷 or 醫療 or 佛山市廣順電器有限公司 or 佛山市雅嘉思科技有限公司 or 佛山市南海區廣工大數控裝備協同創新研究院 or 佛山市日豐企業有限公司 or 藥業 or 紙箱 or 佛山伊貝爾科技有限公司 or 佛山市順德鑫還寶資源利用有限公司 or 佛山市新恆萃材料科技有限公司 or 佛山市精耐機械有限公司 or 廣東省水文局佛山水文分局 or 佛山華骐智能科技有限公司 or 佛山市永建電子有限公司 or 舞台設備 or 佛山市勁雄機械有限公司 or 浙江鼎大塑業有限公司 or 軌道車輛 or 軌道系統) or 主分類號=('c07k%' or 'c08b%' or 'b60v%' or 'b62k%' or 'b62c%' or 'b62h%' or 'b62j%' or 'b62l%' or 'b62m%' or 'b60b33/00%' or 'b60l13/03%') or (分類號=('b61%') and (名稱,摘要+=(鐵路)))) or 名稱,摘要,主權項+=(軌道車 or 軌道式車輛 or 軌道交通車輛 or 輕軌 or 地鐵 or 鐵路車輛 or 高鐵 or 履帶車輛 or 軌道機車 or 磁懸浮 or 磁性懸浮 or 有軌列車 or 沿軌道行駛 or 在軌道上行駛 or 懸磁浮列 or 磁浮車輛 or 磁性車輛 or 磁鐵車輛 or 懸浮列車)))) not (申請(專利權)人=(騰訊 or 廣東歐珀移動通信有限公司 or 三星 or 樂金 or 諾基亞 or 微軟) or 分類號=('g06f17%'))) not 分類號=('h04n5%' or 'h01l21%' or 'g06f3%' or 'h04n7%' or 'g02f1%' or 'h04l12%' or 'g11b7%' or 'g03g15%' or 'h01l27%' or 'h04w4%' or 'h01l33%' or 'h01s5%' or 'h04m1%' or 'h04b7/26%')) or ((分類號=('h04n5%' or 'h01l21%' or 'g06f3%' or 'h04n7%' or 'g02f1%' or 'h04l12%' or 'g11b7%' or 'g03g15%' or 'h01l27%' or 'h04w4%' or 'h01l33%' or 'h01s5%' or 'h04m1%' or 'h04b7/26%') or 申請(專利權)人=(三星 or 樂金 or 諾基亞 or 微軟)) and (名稱,摘要+=(車) or 分類號=('b60%' or 'b62d%')))) not (名稱,摘要+=(干燥爐 or 籃子 or 電吸煙 or 蜂窩通信 or 數據服務 or 數字蜂窩 or 短消息服務 or 殺蟲劑 or 除草劑 or 鈔票 or 潛水 or 天然氣液化 or 能量牽引 or 蜂窩無線 or 熱水器) or 分類號=('h04w24/10%' or 'h04q7/20%' or 'h04q7/22%' or 'c08f10/06%' or 'g06f15/16%' or 'd21h25/00%' or 'c07d311/92%' or 'h04w72/14%' or 'h04m3/53%' or 'h01l29/49%' or 'c03b5/235%' or 'c07d261/04%' or 'c08g64/16%' or 'c08f220%' or 'h04b11%' or 'c07d401%' or 'c25b3%' or 'h04b1/10%' or 'c07d277/28%' or 'h04b7/06%' or 'h04b1/69%' or 'g06f15/00%'))) not (申請日=(17500101 to 18860128) or 公開(公告)日=(17500101 to 18860128)))"
cotnent = exp_parse(string, '分類號')
print(cotnent)

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved