如何从python中两个单独的文本文件中基于子字符串提取行?

萨拉·S

我有两个文本文件。第一个具有以下形式:

K, 6
J, 5
L, 4

第二个文件的格式为:

K_1, 6
K_2, 5
J_1, 4
J_2, 4
J_3, 5
L_1, 4

我需要以下形式的输出:

K_1, 6, 6, same
K_2, 5, 6, different
J_1, 4, 5, different
J_2, 4, 5, different
J_3, 5, 5, same
L_1, 4, 4, same

其中每行以第二个文本文件中的行开头(前两个值),然后我必须根据第一个文本文件中的子字符串来选择第三个值(例如,对于K_1,子字符串为K,我需要从第二个文本文件中选择值6第一个文本文件)。如果每行中的值相同,则应在每行上打印“相同”,否则应打印“不同”。

最后,我需要在输出文件中计算“相同”的行数和“不同”的行数。

我尝试编写以下代码,但未获得预期的输出:

m1 = open('TextFile_1.txt')
m2 = open('TextFile_2.txt')
result = open('Output.txt','w')

lookup_from = {}
l2=[]

for line1 in m1:
    z1 = line1.split(',')[0].strip()
    z2 = z1.split('_')[0].strip()
    z3 = line1.split(',')[1].strip()
    ZX = (z2, z1, z3)
    lookup_from[ZX] = 0

for line2 in m2:
    z11 = line2.split(',')[0].strip()
    z22 = z11.split('_')[0].strip()
    z33 = line2.split(',')[1].strip()
    if z22 in [x for x,_,_ in lookup_from]:
        z4 = (z22, z11, z33)
        z5 = z4 + tuple([x for _,_,x in lookup_from])
        l2.append(z5)

for i in l2:
    result.write(str(i)[1:-1]+'\n')
result.close()
ekhumoro

如果您创建一个简单的键,从第一个文件中获取值dict,然后在读取第二个文件时动态生成输出,则可以避免所有复杂的查找:

with open('TextFile_1.txt') as f1:
    lookup = dict([x.strip() for x in line.split(',')] for line in f1)

with open('Output.txt', 'w') as out:
    with open('TextFile_2.txt') as f2:
        for line in f2:
            k, v = [x.strip() for x in line.split(',')]
            n = lookup[k.split('_')[0]]
            out.write(', '.join(
                [k, v, n, 'same' if v == n else 'different']) + '\n')

输出:

K_1, 6, 6, same
K_2, 5, 6, different
J_1, 4, 5, different
J_2, 4, 5, different
J_3, 5, 5, same
L_1, 4, 4, same

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

查找/替换文本文件中两个单词之间的字符串

在多个文本文件中搜索两个字符串?

如何从python中的文本文件中获取子字符串?

如何限制子字符串以提取SQL Server中两个空格之间的文本?

如何使用python3.6.4提取不同行的单词文本并在两个文本文件中输出

将字符串合并到从UNIX中的文本文件提取的行中

使用python读取文本文件中两个字符串之间的行

Python,如何在整个文本文件中多次提取两个标记之间的文本?

在文本文件中两个子字符串的每次出现之间提取文本

文本处理-两个文本文件:从一个文件中读取程序行,并将其追加到另一个文本文件中的字符串之后

从Python的文本文件中的列中删除前导零,然后将具有两个文本文件的相同字符串的相似行合并为一个

在Clojure中过滤两个文本文件之间的匹配字符串

如何提取文本文件中的特定行以及包含特定字符串的多行?

如何拆分文本文件中的字符串(从原始文件夹检索),然后将其存储到android中两个单独的变量中?

在python 3.0中同时读取两个文本文件并提取所需的字符串

匹配两个文本文件中的行

如何从一个文本文件中提取行,该文本文件包含另一个文件中的列表中的字符串?

批处理文件以在两个文本文件中搜索通用字符串

从两个文本文件中检索匹配的字符串

在巨大的有序文本文件中的两个字符串之间提取文本

Python:如何比较两个文本文件中的字符串并在匹配的情况下检索一行的附加行

尝试使用 Python 在文本文件中查找相同的字符串返回两个不同的结果

如何在文本文件中的某个字符串之后从python中的文本文件中提取数据?

比较两个文本文件中的字符串

使用 Python 提取文本文件中两个字符串之间的文本数据

从一个文本文件中提取两个不同的 JSON 字符串到一个 JSON 数组中

如何在两个字符串之间重复解析文本文件中的文本?

Python - 從文本文件中讀取行,更新行的子字符串並寫入新的文本文件

匹配两个文本文件中的字符串并在 Clojure 中过滤