Python 如何从txt文件中获取结果或将几个文件合并到一个文件中?

Python 如何从txt文件中获取结果或将几个文件合并到一个文件中?,python,r,bash,awk,merge,Python,R,Bash,Awk,Merge,我对结果文件有问题。我有一个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.R

我对结果文件有问题。我有一个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...

如何做到这一点?

假设您有一个包含2个(例如)文件的文件夹,看起来像:

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

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

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]})
以下是合并后的数据:
defaultdict(,{'CS':[0.115,0.12],'FI':[0.375,0.345],'APSI':[0.347,0.56],'KK':[0.1234],'TC':[0.13,0.11])

对不起,StackOverflow不是这样工作的。形式为“我想做X,请给我提示和/或示例代码”的问题被认为是离题的。请访问并阅读,特别是阅读看看
join
Hi,我没想到会有人为我编写所有这样做的代码,甚至还有一些指导,因为我不知道如何合并它。关于JOIN,是关于bash还是您在谈论其他语言?对于这个例子,哪一个是最好的?如果你有多个输入文件,那么显然,在你的例子中显示多个输入文件。显示至少2个输入文件(3个更好)加上给定这些输入文件的预期输出,而不是其他非从您的输入派生的输出。确保覆盖所有边缘情况(例如,重复条目或缺失条目,或是其他字符串的子字符串的键字符串,或空字段或…),而不仅仅是晴天。看看是否还不清楚。是的,我明白了。这一次,它(答案)足以解决我的实际问题(是的,它不创建合并文件,只读取所有文件中的行)。如果下次我需要一个类似的解决方案,但它不起作用,我会记住你写的。谢谢:)谢谢你的回复。它可以工作,但如果我尝试合并103个文件,我得到了203个CS结果,其中文件是103个。但是我试着重构它来作为我的例子。非常感谢您的样品!如果您有103个文件,那么每个文件只包含CS一次,您将得到一个包含103个条目的列表。也许你在一个文件中有几个CS?是的,这是我的错,我只是试着为我的具体情况重构代码,并且犯了一些错误。但现在一切都正常了。非常感谢你的帮助!
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]})