如何将多行数据转为单行多列(优先使用R语言)
处理多行Markdown表格转单行多列的函数
直接上代码,这个函数能轻松处理你的需求,而且改起来很方便:
def convert_markdown_table(input_table: str) -> str: # 拆分输入内容为有效行 lines = [line.strip() for line in input_table.split('\n') if line.strip()] # 提取原表格的列信息 original_headers = [h.strip() for h in lines[0].split('|')[1:-1]] col_count = len(original_headers) # 提取所有数据并扁平化 flat_data = [] for line in lines[2:]: row_items = [item.strip() for item in line.split('|')[1:-1]] flat_data.extend(row_items) # 生成新列名(按原列顺序循环命名) new_headers = [] for idx in range(len(flat_data)): # 计算列的字母标识(A、B、C...)和序号 group_num = idx // col_count col_letter = chr(ord('A') + group_num) new_headers.append(f"Column {col_letter}") # 生成分隔线 separators = ['--------'] * len(new_headers) # 拼接成新表格 new_table = [ f"| {' | '.join(new_headers)} |", f"| {' | '.join(separators)} |", f"| {' | '.join(flat_data)} |" ] return '\n'.join(new_table)
怎么用
- 处理字符串形式的表格,直接传入原表格内容:
original_table = """| Column A | Column B | Column C | | -------- | -------- | -------- | | 12 | 6 | 4 | 2 | 5 | 3 | 6 | 7 | 8""" converted_table = convert_markdown_table(original_table) print(converted_table)
运行后就能得到你想要的格式。
- 处理大型本地文件,直接读写文件内容:
with open('你的大表格文件.md', 'r', encoding='utf-8') as f: content = f.read() result = convert_markdown_table(content) with open('转换后的表格.md', 'w', encoding='utf-8') as f: f.write(result)
怎么修改
- 原表格列数不是3?不用改函数,它会自动适配原列数生成新列名
- 想换列名格式?比如改成
Col_1、Col_2,直接把new_headers里的f"Column {col_letter}"换成f"Col_{idx+1}"就行 - 处理超大型文件?可以改成逐行迭代读取的逻辑,避免一次性加载全部内容到内存。
内容的提问来源于stack exchange,提问作者Sunny_Bird
相关产品推荐
相关产品推荐

