将句子中省略标记去掉,并修改标记文件中的对应位置的下标值。
在此过程中,发现,del 和remove的不同:
del 按照准确位置删除
remove(s) 只要符合的,都会删除掉。 一般遍历删除时,需要倒叙删除,这样在python中,删除比较安全,不然会导致漏删(根本原因正序删的时候,下标错乱,导致找不到位置)
代码如下:
def modify(l1,l2): # 处理 l1->word l2 ->wa l1_arr = l1.split(' ') flag_arr = [] for num in range(len(l1_arr)-1, -1, -1): # 遍历寻找省略的位置,倒叙删除 s = l1_arr[num] if(s=='*OP*' or s == '*T*-1' or s == '*T*-2' or s == '*T*-3' or s == '*pro*' or s == '*PRO*'): flag_arr.append(num) del l1_arr[num] if l2 != 'rejected': l2_arr = l2.split(' ') for num in flag_arr: for count in range(0,len(l2_arr)-1): wa0 = l2_arr[count].split('-')[0] if int(wa0) > num: val0 = str(int(wa0) - 1) val1 = l2_arr[count].split('-')[1] l2_arr[count] = val0 + '-' + val1 l2 = ' '.join(l2_arr) return ' '.join(l1_arr), l2+' '