如何将竖排文本文件转换为横排字符串
技术百科
聖光之護
发布时间: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; ?>
】
相关推荐
- c++的STL算法库find怎么用 在容器中查找指
- 使用类变量定义字符串常量时的类型安全最佳实践
- Win11怎么设置桌面图标间距_Windows11
- Win11玩游戏全屏闪退怎么办_Win11全屏优化
- c++如何实现多态性_c++ 虚函数表原理与动态绑
- 如何使用Golang reflect检查方法数量_
- php中$this和::能混用吗_对象与静态作用域
- Python与Docker容器化部署实战_镜像构建
- Linux怎么禁止Root用户远程登录_Linux
- Win10怎样清理C盘浏览器缓存_Win10清理浏
- 如何用::实现工具类方法调用_php静态工具类设计
- Windows系统被恶意软件破坏后的恢复策略_错误
- php8.4xdebug无法调试怎么办_php8.
- 如何使用正则表达式提取以编号开头、后接多个注解的逻
- php中self::能调用子类重写的方法吗_静态绑
- php8.4如何配置ssl证书_php8.4htt
- Win11怎么关闭自动维护 Win11禁用系统自动
- 如何使用Golang实现错误包装与传递_Golan
- Win11怎么清理C盘系统日志_Win11清理系统
- Win10怎么关闭自动更新错误弹窗_Win10策略
- c++如何连接Redis c++ hiredis库
- mac怎么分屏_MAC双屏显示与分屏操作技巧【指南
- Golang如何测试HTTP中间件_Golang
- Win11怎么关闭键盘按键音_Win11禁用打字声
- 如何优化Golang Web性能_Golang H
- 如何使用Golang优化模块引入路径_Golang
- 如何在 Python 中将 ISO 8601 时间
- Win11如何开启telnet服务 Win11启用
- Win11怎样安装搜狗输入法_Win11安装搜狗输
- Win11怎么关闭内容自适应亮度_Windows1
- Python文件和流处理指南_高效读写大体积数据文
- Win11怎么关闭应用权限_Windows11相机
- Win11怎么查看wifi信号强度_检测Windo
- php485读数据时阻塞怎么办_php485非阻塞
- Win11怎么更改系统语言为中文_Windows1
- 如何用正则表达式精确匹配“start”到“end”
- 如何使用Golang实现容器自动化运维_Golan
- Drupal 中 HTML 链接被双重转义导致渲染
- c# 在高并发场景下,委托和接口调用的性能对比
- Windows10电脑怎么连接蓝牙设备_Win10
- Win11关机界面怎么改_Win11自定义关机画面
- c++ std::atomic如何保证原子性 c+
- 如何在 Go 后端安全获取并验证前端存储的 JWT
- Win11如何设置自动关机 Win11定时关机命令
- php高频调试功能有哪些_php常用调试函数与工具
- Go 中实现 Python urllib.quot
- Win11怎么设置按流量计费_Win11限制后台流
- Windows 11无法安全删除U盘提示设备正在使
- Win11怎么设置任务栏对齐方式_Windows1
- 如何使用Golang实现路由分组管理_Golang

line in lines]
QQ客服