我有一个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 等)
假设您的文字与您的问题中的文字类似,
text = """
Ident
Name
Value A
Value B
Value C
Ident
Name
Value A
Value B
Value C
"""
您可以将所有这些单元格值拆分到一个列表中。根据列数创建行列表。并将行列表中的所有行用“连接起来” “字符。
拆分每个单元格值并将它们放入列表中
old_delimiter = "\n"
new_delimiter = ";"
column_count = 5
cell_list = text.strip().split(old_delimiter)
创建一个函数将每个单元格值合并到一个新行中
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
生成所有行
rows = map(combine_cells_into_row,range(0, len(cell_list), column_count))
然后使用 join 组合生成的行。
output = "\n".join(rows)
print(output)