# 輸入範例:
# singer_周傑|周傑倫|劉德華|王力宏;song_冰雨|北京歡迎你|七裡香;actor_周傑倫|孫俪
# 請播放周傑倫的七裡香給我聽
# 輸出範例:
# 請播放 周傑倫/actor,singer 的 七裡香/song 給我聽
import sys
def merge(str,key,t,i): #合并字元串,key是目前搜尋到的字元串#先考慮主串中關鍵詞隻出現一次
str=str.split(key)
ind=
if str[][]!='/': #當隻出現一個标簽
new_key=key+'/'+t[i]
return ' '.join([str[],new_key,str[]])
else: #是'/'時
for j in range(len(str[])):#找已有标簽的空格
if str[][j]==' ':
ind=j
break
#如果在尾部還沒考慮
new_key=key+str[][:ind]+','+t[i]+str[][ind:]
return ' '.join([str[],new_key])
str1='singer_周傑|周傑倫|劉德華|王力宏;song_冰雨|北京歡迎你|七裡香;actor_周傑倫|孫俪'
str2='請播放周傑倫的七裡香給我聽'
str1_list=str1.split(';')
t=[]
for i in range(len(str1_list)):
tmp=str1_list[i].split('_')
t.append(tmp[])
tmpp=tmp[].split('|')
t.append(tmpp)
#找最長比對
key=[]
for i in range(,int(len(t)/)):
i=i*
longest = -
ind =
for eme in t[i+]:
if eme in str2: #若找到,則計算其長度是否最長
if len(eme)>longest:
longest=len(eme)
ind=t[i+].index(eme)
key.append(ind)
#字元合并
for i in range(,int(len(t)/)):
str2=merge(str2, t[i*+][key[i]], t, i*) #i*2+1是t的人物表索引,i*2是表頭索引
#去除連續空格
re=' '.join(str2.split())
print(re)