本帖最后由 shangjiecat 于 2020-2-15 15:43 编辑 #1.txt字典建立部分
print('开始装载数据...')
with open('1.txt', 'r') as dicFile:
txtDict = {} # 建立字典
for line in dicFile:
li = line.split(',')
txtDict[li[0]] = li[1].strip("\n") # 加入字典
#匹配部分
search = open('2.txt', 'r')
for line in search: #对2.txt的每一行单独查找
line = line.strip("\n") #去掉换行号
part = '' #初始化判断条件
x = 0
for key in txtDict: #从字典里遍历键
length = len(key) #获取字典键长
if key in line: #如果一行的字符串里有key值,把key变成0(如YABVY_A变成YAB0)
nline = line.replace(key,'0')
else: #没有则查找下一个键
continue
if nline[-1] == '0' and x < length: #如果末尾有0,说明替换成功,判断新后缀长度与已存后缀哪个长
nline = nline.replace('0',key,line.count(key)-1) #增加防止VY_AVY_AVY_A类的出现,因此反替换
#(最后一个不替换,保留)
x = length #因为被替换,把该后缀长度存入x,用于判断是否有更长的后缀
part = nline[:-1] +"/"+ key + "(%s)"%txtDict[key] #输出需要的格式字符串
inf = line if part == '' else part #如果没有则直接输出该行的判断
print(inf,end = ',')
search.close()
输出如下开始装载数据...
YAB/VY_A(Fb11),AAA/UY_E(Fb11),VVV/VY_A(Fb11),SA/0Y_A(Fb11),SSSO_E, #最后一个是不存在的情况,应该是这个意思吧?
考虑如果楼主是初学者原因,语句没有难理解的那种,然后就得用到很多循环,代码显得层层叠叠,不知道会不会有更好的想法,也不知道能不能满足楼主需求,如有疑问或要改进,欢迎回复! |