【问题标题】:How to get results from txt files or merge few files in one?如何从 txt 文件中获取结果或将几个文件合并为一个?
【发布时间】:2019-07-11 02:43:35
【问题描述】:

我的结果文件有问题。我有 103 个“.txt”文件。它们都包含这样的数据:

APSI:0.347
TC:0.130
CS:0.115
FI:0.375

我需要计算统计数据,但我需要首先将所有值保存在一个文件中。合并所有文件并将其导入 R 或 Python 的最佳方法(在我看来)。然后我将创建数据框,它会很容易计算。

但我不知道如何将文件合并到一个文件中 实现这种格式:

APSI:0.XXX, 0.FFFF, 0.FFTR...
TC:0.XXX, 0.GSFF, 0.XXXX...
CS:0.RRR, 0.CGGG, 0.TTTT...
FI:0.TTT, 0.RRTT, 0.RRRR...

怎么做?

【问题讨论】:

  • 抱歉,这不是 StackOverflow 的工作方式。 “我想做 X,请给我提示和/或示例代码”形式的问题被认为是题外话。请访问help center并阅读How to Ask,尤其是阅读Why is “Can someone help me?” not an actual question?
  • 看看join
  • 嗨,我没想到有人会为我编写所有代码,但甚至是一些指导,因为我不知道如何合并它。关于 JOIN,是关于 bash 还是在谈论其他语言?哪个最适合这个例子?
  • 如果您有多个输入文件,那么显然,在您的示例中显示多个输入文件。显示至少 2 个输入文件(3 个会更好)加上给定这些输入文件的预期输出,而不是不是从您的输入派生的其他输出。确保涵盖任何边缘情况(例如重复条目或缺失条目,或作为其他字符串子字符串的键字符串,或空字段或....),而不仅仅是晴天的情况。如果不清楚,请参阅How to Ask。
  • 是的,我明白了。这次它(答案)足以解决我的实际问题(是的,它不会创建合并文件,只是从所有文件中读取行)。如果下次我需要类似的解决方案,但它不起作用,我会记住你写的。谢谢你:)

标签: python r bash awk merge


【解决方案1】:

假设您有一个包含 2 个(例如)文件的文件夹,如下所示:

APSI:0.347
TC:0.130
CS:0.115
FI:0.375

还有

APSI:0.56
TC:0.11
CS:0.12
FI:0.345
KK:0.1234

下面的代码收集数据并将它们存储在字典中,其中每个键都指向值列表。基于此数据结构,您可以进行统计计算。

import os
from collections import defaultdict

FILES_FOLDER = 'files'
data = defaultdict(list)
files = os.listdir(FILES_FOLDER)
for f in files:
    with open(os.path.join(FILES_FOLDER, f)) as input_file:
        lines = input_file.readlines()
        for line in lines:
            tmp = line.split(':')
            key = tmp[0]
            value = tmp[1]
            data[key].append(float(value))

print('Here is the merged data:')
print(data)

输出:

Here is the merged data:
defaultdict(<type 'list'>, {'CS': [0.115, 0.12], 'FI': [0.375, 0.345], 'APSI': [0.347, 0.56], 'KK': [0.1234], 'TC': [0.13, 0.11]})

【讨论】:

  • 感谢您的回复。它可以工作,但是如果我尝试合并 103 个文件,我会得到 203 个 CS 结果,其中文件是 103。但我尝试为我的示例重构它。非常感谢您的样品!
  • 如果您有 103 个文件,则每个文件仅包含 CS,您将获得一个包含 103 个条目的列表。也许您在一个文件中的 CS 很少?
  • 是的,这是我的错,我只是尝试为我的具体情况重构代码,并犯了一些错误。但现在一切正常。非常感谢您的帮助!
猜你喜欢
  • 2011-06-18
  • 2022-12-08
  • 1970-01-01
  • 1970-01-01
  • 2015-02-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多