Python,使用字典将数据组合为两个文件的匹配部分
Posted
技术标签:
【中文标题】Python,使用字典将数据组合为两个文件的匹配部分【英文标题】:Python, combining data as a matching part of two files using a dictionary 【发布时间】:2022-01-20 04:46:50 【问题描述】:输入 1:
Aa Ab,Ac,Information1
Ba Bb,Bc,Information2
Ca Cb,Cc,Information3
输入 2:
ID
A1
A2 information3
A3 asdfasdf
A3 vlkmgoie
//
ID
A1
A2 information2
A3 opjnbiube
A3 plwikjnd
//
预期输出:
>Aa,Ab,Ac,Information1
>Ba,Bb,Bc,Information2
A3 opjnbiube
A3 plwikjnd
>Ca,Cb,Cc,Information3
A3 asdfasdf
A3 vlkmgoie
代码:
dictionary =
with open(input_file1, 'r') as input1:
for line in input1:
replaced_line = '>' + line.replace('\t', ',').strip()
id = replaced_line.strip().split(',')[-1]
dictionary[id] = id
with open(input_file2, 'r') as input2:
for block in input2.read().split('//'):
for k in dictionary.keys():
keys_from_id = k
if keys_from_id in block:
首先,我只提取了 input_file1 末尾的信息。其次,块(单位)是根据 Input_file2 中的“//”制作的。在这种情况下,如果 input_file2 中的块包含从 input_file1 提取的信息,我想在 input_file1 的每一行下方写入块的一部分内容,例如“预期输出”。那么,我的问题是如何通过匹配 input_file2 的块内容,将 input_file1 中提取的信息保存为字典?
【问题讨论】:
【参考方案1】:你可以这样做:
import re
s1 = "Aa Ab,Ac,Information1\nBa Bb,Bc,Information2\nCa Cb,Cc,Information3"
s2 = "ID\nA1\nA2 information3\nA3 asdfasdf\nA3 vlkmgoi\n//\nID\nA1\nA2 information2\nA3 opjnbiube\nA3 plwikjnd//"
pattern = re.compile("(information\d+)(.*)", re.IGNORECASE|re.DOTALL)
d1 = x[-1]:re.sub("[ ]+", ",", ",".join(x)) for x in list(map(lambda x:x.split(","), s1.split("\n")))
d2 = x[0][0].capitalize(): x[0][1].strip().split("\n") for x in map(lambda x: pattern.findall(x), s2.split("//")) if len(x) == 1
for k, v in d1.items():
print(f'>v')
print("\n".join(d2.get(k, "")))
【讨论】:
以上是关于Python,使用字典将数据组合为两个文件的匹配部分的主要内容,如果未能解决你的问题,请参考以下文章