Amgalang 发表于 2022-8-8 19:21:34

A.txt中的关键词,在B.txt中的搜索 求助,感谢

各位好,

为了描述清楚我的需求,请大家也参看下图,图中描述了原始文件A.txt、B.txt和代码跑完后的输出结果C.txt的格式和要求。

1.每个文件里的格式说明:
        A.txt中包含了关键词,一词一行的格式。
        B.txt中有多个包含A.txt关键词的集合,一集合一行。一些词后面01,02,03,04,05的标示,所以这些会影响匹配,请把这些做个处理。
        C.txt是我需要输出的文件,需要严格按照A.txt的内容顺序排列。

2.图片:


3.附件如下:



4.在此手工显示出几个输出文件 C.txt的示例:

NILH_A=HEUHED        {W1,BALCIR=HEUHED}
EBUGEN=ABV        {W2,NASVTAN=ABV}
TANIL=DASVL        {W2,TANIL=DASVL}

5.我一个一个手工干实在是太费劲了,希望得到您的帮助,等成功后请喝咖啡。哈哈哈(ps,我这样发帖不知道对不对,就是表达了我的急切心理)
等您的回复,谢谢。

qq1151985918 发表于 2022-8-8 19:21:35

Amgalang 发表于 2022-8-8 20:37
终于等到你,真心感谢,方便给到代码吗?我想学习学习,再次感谢。

set2list = lambda s:s.replace("'","").replace("{","['").replace("}","']").replace(",","','").replace(" ","")
list2set = lambda l:'{' + ','.join(l) + '}'

with open('A.txt','r',encoding='utf-8') as a:
    dataA = a.readlines()
with open('B.txt','r',encoding='utf-8') as b:
    dataB = b.readlines()
   
res = []
for la in dataA:
    la = la.strip()
    for lb in dataB:
      lb = eval(set2list(lb.strip()))
      if la in lb:
            lb.remove(la)
            res.append(la+'      '+list2set(lb))
            break
    else:
      res.append(la+'      '+'{}')
      
with open('C.txt','w',encoding='utf-8') as c:
    c.write('\n'.join(res))

Amgalang 发表于 2022-8-8 19:26:02

补充说明:
1.A.txt中只有一部分词在B.txt中,不是全部词汇都有。
2.A.txt中的词每个词中间都有“=”号,不用管它,B.txt也如此,就看做一个词即可。
谢谢

Amgalang 发表于 2022-8-8 19:28:10

Amgalang 发表于 2022-8-8 19:26
补充说明:
1.A.txt中只有一部分词在B.txt中,不是全部词汇都有。
2.A.txt中的词每个词中间都有“=”号, ...

不好意思,再补充一个:

A.txt中的词若不在B.txt也要在C.txt中按照原始A.txt中的顺序写入C.txt,只是后面就是一个空集合。

qq1151985918 发表于 2022-8-8 20:29:02

Amgalang 发表于 2022-8-8 20:37:56

qq1151985918 发表于 2022-8-8 20:29


终于等到你,真心感谢,方便给到代码吗?我想学习学习,再次感谢。
页: [1]
查看完整版本: A.txt中的关键词,在B.txt中的搜索 求助,感谢