纯新一只,请教各位如何将TXT文本里多行字符串,转化为多列显示,
比如:把
123
123
123
转化为:
111
222
333
可以通过读取文本文件的每一行,将其存储到列表中,然后使用zip函数将多个列表中的元素按列合并。
以下是示例代码:
with open('data.txt', 'r') as f:
lines = [line.strip() for line in f.readlines()]
cols = 3 # 列数
rows = len(lines) // cols # 行数
# 将多行数据转化为多列数据
data = [list(x) for x in zip(*[lines[i:i+rows] for i in range(0, len(lines), rows)])]
# 输出结果
for row in data:
print('\t'.join(row))
其中,data.txt
是包含多行数据的文本文件,cols
是要生成的列数,通过计算得到行数 rows
。然后使用列表解析式将多行数据分组成多个列表,再使用 zip
函数将多个列表中的元素按列合并,最终得到一个包含多个列表的列表 data
。最后,遍历 data
中的每一行,将其转化为字符串并输出。
参考一下
# 读取文件中的多行数据
with open('data.txt', 'r') as f:
lines = f.readlines()
# 将多行数据转换为多列数据
data = zip(*[line.strip().split() for line in lines])
# 打印多列数据
for column in data:
print(column)
先把一些过程中查询到的资料贴一下,主要是编码方面知识。
1、utf-8与utf-8-sig两种编码格式的区别
UTF-8以字节为编码单元,它的字节顺序在所有系统中都是一様的,没有字节序的问题,也因此它实际上并不需要BOM(“ByteOrder Mark”)。但是UTF-8 with BOM即utf-8-sig需要提供BOM。
2、\ufeff
字节顺序标记(英语:byte-order mark,BOM)是位于码点U+FEFF的统一码字符的名称。当以UTF-16或UTF-32来将UCS/统一码字符所组成的字符串编码时,这个字符被用来标示其字节序。它常被用来当做标示文件是以UTF-8、UTF-16或UTF-32编码的记号。
3、ASCII、GB2312、GBK、GB18030编码关系
GB18030兼容GBK,GBK兼容GB2312,GB2312兼容ASCII。所谓兼容,你可以简单理解为子集、不冲突的关系。例如GB2312编码的文件中可以出现ASCII字符,GBK编码的文件中可以出现GB2312和ASCII字符,GB18030编码的文件可以出现GBK、GB2312、ASCII字符。
https://cloud.tencent.com/developer/article/1343240