合并多个文件中的第一列

2024-03-29 06:02:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我有文件#1,我提供标准输入:

{123:{'all_uppercase': 0, '#': 0, 'sscore !=0': 15}}
{456:{'all_uppercase': 0, '#': 1, 'sscore !=0': 19}}
{789:{'all_uppercase': 0, '#': 1, 'sscore !=0': 20}}

我有文件2:

{'+1': {'all_uppercase': 0, '#': 0, 'sscore !=0': 15}}
{'0': {'all_uppercase': 0, '#': 1, 'sscore !=0': 19}}
{'0': {'all_uppercase': 0, '#': 0, 'sscore !=0': 8}}

我的输出应该是:

 123 15 +1
 456 19 0
 789 20 0

为什么这些线必须排列整齐是很有意义的。所以对于id-123456789,二进制文件分别是+1,0,0和值15,19,20

我这样做是因为它们是文件中的字典,但字典的问题是“顺序”,所以值的顺序不对。你知道吗

在标准输入中,我提供文件#1。你知道吗

for line in sys.stdin:
   d = ast.literal_eval(line)
   for k,v in d.items():
      inner_dict = dicts.setdefault(k, {})
      inner_dict['sscore !=0'] = v.get('sscore !=0')
   f = open("file#2.txt","r")
   for score in f:
      d2 = ast.literal_eval(senti)


   print k,dicts[k]['sscore !=0'],d2.keys()
   f.close()

Tags: 文件infor标准字典顺序evalline
2条回答

看起来您需要像这样使用zip

with open("file#2.txt","r") as f:
    for line, score in zip(sys.stdin, f):
        ...

我就是这样解决的:

dicts = {}
inner_dict = {}

#以读取格式打开文件

with open("file#1.txt","r") as f:

Zip有助于保持值的原样

   for line, score in zip(sys.stdin, f):

把它解释成字典

      d2  = ast.literal_eval(score) 

#对于键,字典项中的值

      for k,v in d2.items(): 
         inner_dict = dicts.setdefault(k, {}) 

#获取字典的值部分的值,因为它的字典在字典中

         inner_dict['sscore !=0'] = v.get('sscore !=0') 

#打印字典的键,获取与其键对应的sscore的值,通过按空格拆分获取第一列值

      print k,dicts[k]['sscore !=0'],re.split("\s+", line.strip())[0]

如果有人能改进代码,请告诉我。你知道吗

相关问题 更多 >