Python:如何将文本文件中的竖排字符转换为横排单词字符串?
文本文件字符重组问题
问题描述
原始文本文件内容:
AOPL PREE PAAM LNCO EGHN E
期望得到的结果:
APPLE,ORANGE,PEACH,LEMON
尝试用pandas读取文件,代码如下:
import pandas as pd df = pd.read_fwf("fruits.txt", header=None, names=['A'])
读取后的数据框:
A 0 AOPL 1 PREE 2 PAAM 3 LNCO 4 EGHN 5 E
目前卡在处理环节,原本思路是把每个字符放到特定行列后再拼接成横排字符串,但想找更优的处理方法。
处理方案
方案1:直接文件读取处理(无需pandas,更轻量)
核心逻辑是对齐每行字符长度,按列提取拼接:
# 读取文件并统一每行长度为4(最长行的字符数) with open("fruits.txt", "r") as f: # 去掉换行符,用ljust补空格到4个字符 lines = [line.rstrip('\n').ljust(4) for line in f] # 逐列提取字符拼接成水果名 fruits = [] for col_idx in range(4): # 取每一行的第col_idx个字符,拼接后去掉空格 fruit_name = ''.join([line[col_idx] for line in lines]).replace(' ', '') fruits.append(fruit_name) # 用逗号连接所有水果名 final_result = ','.join(fruits) print(final_result)
运行后直接输出:APPLE,ORANGE,PEACH,LEMON
方案2:基于已读取的pandas数据框处理
如果不想换读取方式,在现有df基础上处理:
import pandas as pd df = pd.read_fwf("fruits.txt", header=None, names=['A']) # 1. 把每行字符串补全到4个字符,拆分每个字符为单独列 df_split = df['A'].str.ljust(4).str.split('', expand=True) # 2. 去掉拆分后产生的首尾空列 df_split = df_split.drop(columns=[0, 5]) # 3. 按列拼接字符,去掉空格后收集所有水果名 fruit_list = df_split.apply(lambda col: ''.join(col).replace(' ', ''), axis=0) # 4. 转成逗号分隔的字符串 final_result = ','.join(fruit_list) print(final_result)
同样能得到目标结果。
内容的提问来源于stack exchange,提问作者Kenny
相关产品推荐
相关产品推荐

