如何将竖排文本文件转换为横排字符串
技术百科
聖光之護
发布时间:2026-01-01
浏览: 次 本文介绍使用 python 内置 zip 函数高效转置竖排文本(如字符矩阵),将其按列拼接为单词列表,并支持灵活截取列范围,最终生成逗号分隔的横排字符串。
在处理某些特殊格式的文本文件时(例如谜题、密码学数据或 OCR 输出错位),内容可能以“竖排”方式存储:每行代表一列字符,而非一个完整单词。如以下 fruits.txt 文件:
AOPL PREE PAAM LNCO EGHN E
目标是将其还原为横排单词序列:APPLE,ORANGE,PEACH,LEMON。
核心思路是矩阵转置——将原文件视为字符二维网格,按列读取即得单词。Python 的 zip(*lines) 正是实现该操作的简洁利器:它将多行字符串“并行解包”,自动按索引位置分组各列字符。
✅ 推荐解决方案(稳健、无依赖):
path = "fruits.txt"
with open(path) as f:
lines = [line.rstrip('\n') for line in f] # 统一去除换行符,避免空格干扰
# 转置:zip(*lines) 将第0列、第1列...各字符元组化,再用 ''.join 拼接成单词
words = ["".join(chars).strip() for chars in zip(*lines)]
# 输出结果
result_str = ",".join(words)
print(result_str) # APPLE,ORANGE,PEACH,LEMON⚠️ 注意事项:
-
所有行长度需一致:zip 在最短行处截断。若末尾存在不等长行(如示例中最后一行仅一个空格),建议预处理对齐,例如用空格补全:
max_len = max(len(line) for line in lines) lines = [line.ljust(max_len) for
line in lines] -
跳过首列/指定起始列:如只需从第2列开始(即跳过 'A', 'O', 'P', 'L', 'E', ' ' 对应的 'APPLE'),可结合 itertools.islice:
from itertools import islice words = ["".join(chars).strip() for chars in islice(zip(*lines), 1, None)] # 输出:['ORANGE', 'PEACH', 'LEMON']
? 进阶提示:
若后续需用 pandas 进一步分析,可直接将 words 列表转为 DataFrame:
import pandas as pd
df = pd.DataFrame({"fruit": words})
# 或导出为 CSV:df.to_csv("fruits_horizontal.csv", index=False, header=False)此方法无需外部库(除 pandas 非必需),逻辑清晰、性能优异,是处理此类“竖排→横排”转换任务的标准实践。
# python
# app
# word
# csv
# apple
相关栏目:
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
AI推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
SEO优化<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
技术百科<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
谷歌推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
百度推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
网络营销<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
案例网站<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
精选文章<?muma echo $count; ?>
】
相关推荐
- Mac电脑进水了怎么办_MacBook进水后紧急处
- Windows电脑键盘突然失灵怎么办?(驱动与硬件
- C++ static_cast和dynamic_c
- 如何用正则表达式精确匹配最多含一个换行符的起止片段
- Laravel 查询 JSON 列:高效筛选包含数
- 如何在Golang中实现并发消息队列消费者_Gol
- Python性能剖析高级教程_cProfileLi
- Python面向对象实战讲解_类与设计模式深入理解
- Win11怎么关闭任务栏小组件_Windows11
- php本地部署支持nodejs吗_php与node
- Python异步网络编程_aiohttp说明【指导
- Python数据挖掘进阶教程_分类回归与聚类案例解
- php下载安装选zip还是msi格式_两种安装包对
- Win10怎么卸载爱奇艺_Win10彻底卸载爱奇艺
- Mac如何查看电池健康百分比_Mac系统信息电源检
- Win11怎么制作U盘启动盘_Win11原版系统安
- Python函数接口文档化_自动化说明【指导】
- Win11怎么设置右键刷新选项_Windows11
- Python实现图数据库操作_Neo4j核心CRU
- Windows系统被恶意软件破坏后的恢复策略_错误
- Python数据挖掘核心算法实践_聚类分类与特征工
- c# 在高并发场景下,委托和接口调用的性能对比
- Win11蓝牙开关不见了怎么办_Win11蓝牙驱动
- MAC如何隐藏文件夹及文件_MAC终端命令隐藏与第
- Win10怎么关闭自动更新错误重启 Win10策略
- Python邮件系统自动化教程_批量发送解析与模板
- Mac怎么设置登录项_Mac管理开机自启动程序【教
- Windows10怎么查看硬件信息_Windows
- Win11怎么设置开机密码_Windows11账户
- Windows10电脑怎么设置虚拟光驱_Win10
- c++ reinterpret_cast怎么用 c
- Win10怎么更改用户名 Win10修改账户名称操
- Windows10系统怎么查看硬盘健康_Win10
- php485支持哪些操作系统_php485跨系统支
- Win11输入法切换快捷键怎么改_Windows
- Win11文件扩展名怎么显示_Win11查看文件后
- 如何在Windows中创建新的用户账户?(标准与管
- Win10怎么关闭自动更新错误弹窗_Win10策略
- 如何使用Golang搭建Web开发环境_快速启动H
- 如何使用正则表达式批量替换重复的“-”模式为固定字
- Dapper的Execute方法的返回值是什么意思
- c# 如何深拷贝和浅拷贝
- Win11怎么开启窗口对齐助手_Windows11
- Win11怎么看电池循环次数_Win11笔记本电池
- C++如何获取CPU核心数?(std::threa
- mac怎么安装adb_MAC配置Android A
- MAC的“接续互通”功能无法使用怎么办_MAC检查
- MySQL 中使用 IF 和 CASE 实现查询字
- Win11怎么开启远程桌面_Win11系统远程桌面
- Win11怎么设置虚拟内存_Windows 11优

line in lines]
QQ客服