![](/img/trans.png)
[英]Extracting specific data from multiple text files and writing them into columns in csv
[英]Taking output calculated from data in multiple text files and writing them into different columns of a CSV file
我正在從文本文件的不同列中的兩個數字計算值(數字)。 然后,我遍歷多個文本文件以進行相同的計算。 我需要將輸出寫入CSV文件的不同列,其中每一列都對應於從單個文本文件獲得的計算結果。 我或多或少知道如何遍歷不同的文件,但是我不知道如何告訴Python寫入不同的列。 任何指導表示贊賞。
您可以使用zip
提供延遲迭代的事實來非常有效地執行此操作。 您可以定義一個簡單的生成器函數,該函數可以對初始化文件的每一行進行計算。 您還可以使用contextlib.ExitStack
在單個上下文管理器中管理打開的文件:
from contextlib import ExitStack
from csv import writer
def calc(line):
# Ingest a line, do some calculations on it.
# This is the function you wrote.
input_files = ['file1.txt', 'file2.txt', ...]
def calculator(file):
"""
A generator function that will lazily apply the calculation
to each line of the file it is initialized with.
"""
for line in file:
yield calc(line)
with open('output.csv', 'w') as output, ExitStack() as input_stack:
inputs = [calculator(input_stack.enter_context(open(file))) for file in input_files]
output_csv = writer(output)
output_csv.wite_row(input_files) # Write heading based on input files
for row in zip(*inputs):
output_csv.write_row(row)
CSV中的輸出將與input_files
的文件名順序相同。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.