【问题标题】:How do search replace and merge textfile in python?如何在python中搜索替换和合并文本文件?
【发布时间】:2021-08-24 04:36:41
【问题描述】:

我有像
这样的文本文件 file1.txt

a=id01
desc=sample1
attribute1

a=id02
desc=sample2
attribute1
attribute2

a=id05
desc=sample5

a=id03
desc=sample3

a=id04
desc=sample4


file2.txt

id01=sample text id01 
id05=sample text id05
id02=sample text id02 
id03=sample text id03
id04=sample text id04 

行数不一样。并随机排序。

合并这两个文件后我想要以下结果:
输出.txt

a=id01;  id01=sample text id01 
desc=sample1
attribute1

a=id02; id02=sample text id02 
desc=sample2
attribute1
attribute2

a=id03; id03=sample text id03 
desc=sample3

a=id04; id04=sample text id04 
desc=sample4

a=id05; id05=sample text id05 
desc=sample5

【问题讨论】:

  • file_1 和 file_2 的顺序是否相同,如 id01、id02、id03 ... 等?或者在file_1中可以是id01、id03、id02,在file_2中也可以是id02、id01?
  • 是的。 sort random file_1 可以是 id01, id03, id02,在 file_2 中可以是 id02, id01
  • id043和id04匹配的规则是什么?

标签: python text array-merge


【解决方案1】:

由于规范的变化,这里已经重写:

import re

F1 = 'file1.txt'
F2 = 'file2.txt'
O1 = 'output.txt'

D = {}

EXPR = re.compile('^(.*)=(.*)$')

with open(F1) as f1:
    lines = iter(f1.readlines())
    try:
        while True:
            k = next(lines).strip()
            D[k] = [next(lines).strip()]
            while (_s := next(lines).strip()):
                D[k].append(_s)
    except StopIteration:
        pass

with open(O1, 'w') as o1:
    with open(F2) as f2:
        for line in sorted(f2.readlines()):
            try:
                k = 'a=' + EXPR.match(line)[1]
                if k in D:
                    o1.write(f'{k};  {line}')
                    for a in D[k]:
                        o1.write(f'{a}\n')
                    o1.write('\n')
            except Exception:
                pass

【讨论】:

  • 在这种情况下,我的建议行不通。很遗憾您在第一次提出问题时没有正确说明您的问题
猜你喜欢
  • 2016-09-22
  • 1970-01-01
  • 2013-06-13
  • 2016-10-18
  • 1970-01-01
  • 2023-03-16
  • 1970-01-01
相关资源
最近更新 更多