将单列txt文件转换为多列csv

问题描述 投票:0回答:1

我有一个txt文件,其数据结构如下

Ident
Name
Value A
Value B
Value C
Ident 
Name
Value A
Value B
Value C
...

如果我知道所需的列数并且可以确保文本文件的所有 Idents 具有相同数量的值,如何将其转换为以下结构的 csv 文件?

Ident;Name;Value A;Value B;Value C;
Ident;Name;Value A;Value B;Value C;

我想这很简单,但我找不到任何东西。代码语言可以是任何(bash、python 等)

dataframe converters
1个回答
1
投票

假设您的文字与您的问题中的文字类似,

text = """
Ident
Name
Value A
Value B
Value C
Ident
Name
Value A
Value B
Value C
"""

您可以将所有这些单元格值拆分到一个列表中。根据列数创建行列表。并将行列表中的所有行用“连接起来” “字符。

步骤

  1. 拆分每个单元格值并将它们放入列表中

    old_delimiter = "\n"
    new_delimiter = ";"
    
    column_count = 5
    
    cell_list = text.strip().split(old_delimiter)  
    
  2. 创建一个函数将每个单元格值合并到一个新行中

    def combine_cells_into_row(cell_start_index):
        column_values = cell_list[cell_start_index : cell_start_index + column_count]
        row = f"{new_delimiter}".join(column_values) + new_delimiter
        return row
    
  3. 生成所有行

    rows = map(combine_cells_into_row,range(0, len(cell_list), column_count))
    
  4. 然后使用 join 组合生成的行。

    output = "\n".join(rows) 
    
    print(output)
    
© www.soinside.com 2019 - 2024. All rights reserved.