如何将竖排文本文件转换为横排字符串
技术百科
聖光之護
发布时间: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; ?>
】
相关推荐
- Win11键盘快捷键大全_Windows 11常用
- 如何在 Go 中创建包含映射(map)的切片(sl
- Windows10如何删除Windows.old_
- PhpStorm怎么调试PHP代码_PhpStor
- Win11怎么关闭透明效果_Windows11辅助
- Win11怎么恢复误删照片_Win11数据恢复工具
- 如何在 Go 中正确反序列化 XML 多节点数组(
- 如何使用Golang实现跨域请求支持_Golang
- 如何使用Golang encoding/json解
- Win11怎么恢复出厂设置_Win11重置此电脑保
- 如何使用Golang进行HTTP服务性能测试_测量
- 如何减少Golang内存碎片化_Golang内存分
- 如何使用Golang benchmark测量函数延
- 如何在Golang中实现微服务服务拆分_Golan
- Win11如何设置开机自动联网 Win11宽带连接
- Win10怎样卸载TeamViewer_Win10
- 如何使用Golang指针与结构体结合_修改结构体内
- Python爬虫项目实战教程_Scrapy抓取与存
- C++如何使用Qt创建第一个GUI窗口?(入门教程
- 如何在Golang中处理二进制数据_Golang
- 如何在Golang中处理URL参数_Golang
- 获取 PHP 文件最后修改时间的正确方法
- 如何在 Go 中正确测试带 Cookie 的 HT
- Win11怎么更改管理员名字 Win11修改账户名
- 如何用::实现工具类方法调用_php静态工具类设计
- Go 中 := 短变量声明的类型推导机制详解
- php485函数执行慢怎么优化_php485性能提
- php485能和物联网模块通信吗_php485对接
- Win11如何添加/删除输入法 Win11切换中英
- Windows10电脑怎么设置虚拟内存_Win10
- Win11笔记本怎么看电池健康度_Win11电池报
- 如何使用Golang log记录不同级别日志_Go
- php增删改查在php8里有什么变化_新特性对cu
- 如何在Golang中使用container/hea
- Windows10电脑怎么连接蓝牙设备_Win10
- Win11玩游戏全屏闪退怎么办_Win11全屏优化
- 如何解决Windows字体显示模糊的问题?(Cle
- 用lighttpd能运行php吗_lighttpd
- 如何在Golang中使用内置函数_Golangle
- Win10怎样清理C盘Steam游戏缓存_Win1
- ACF 教程:如何正确更新嵌套在多层 Group
- php怎么连接数据库_MySQL数据库连接的基础代
- Win10怎样卸载iTunes_Win10卸载iT
- 如何使用正则表达式提取以编号开头、后接多个注解的逻
- 为什么Go建议使用error接口作为错误返回_Go
- Laravel 查询 JSON 列:高效筛选包含数
- Golang如何测试HTTP中间件_Golang
- Linux如何安装Tomcat应用服务器_Linu
- c++如何打印函数堆栈信息_c++ backtra
- MAC怎么一键隐藏桌面所有图标_MAC极简模式切换

line in lines]
QQ客服