首页 > 解决方案 > 如何从行到列打印某些特定字符?

问题描述

我有一个输入文件,其中包含 5 行重复的相同格式的数据。我需要将这些数据格式化为一行(CSV 文件),并且只有几个与我相关的字段。如何使用提供的输入文件实现上述输出。

注意 - 我对学习任何语言都很陌生,还没有达到这么深的细节来写我自己的。我已经编写了导入输入文件的代码,到达一个特定的单词,然后打印其余数据(这是我需要帮助的地方,因为我不需要输入中的所有信息作为使用空间是分隔符没有在正确的列中给出输出)。我还编写了将输出写入 csv 文件的代码。

注2 - 我也很喜欢这个论坛,如果我在发布我的查询时发了任何帖子,请原谅我。

输入 - 输入文件

输出 - 输出文件

import itertools, csv

标签: pythonstringcsvinputtext

解决方案


您应该读入文件并手动解析,然后使用csv模块将其写入.csv文件:

import re

with open('myfile.txt', 'r') as f:
    lines = f.readlines()

# divide on whitespace characters, but not single spaces
lines = [re.split("\s\s+", line) for line in lines]

with open('output.csv', 'w', newline='') as csvfile:
    writer = csv.writer(csvfile, delimiter=' ', quotechar='|', quoting=csv.QUOTE_MINIMAL)
    for line in lines:
        writer.writerow(lines)

但这将包括每一条数据。您可以遍历lines并删除不想保留的字段。所以在你写 csv 之前,你可以这样做:

def filter_line(line):
    # see how the input file was parsed
    print(line)
    # for example, only keep the first 2 columns
    return [line[0], line[1]]

lines = [filter_line(line) for line in lines]

推荐阅读