python将文件数据读入列表

创建sample.txt:

FE 0A 00 03 03 FF 03 1A 01 FF 4A 99 69

程序如下:

with open('sample.txt','r') as f:
    line = f.readline().strip()         # 如果不加strip,会出现空行
    linestr = line.split(" ")
    print(linestr)   
for i in range(0, len(linestr)):
    print(linestr[i], end=" ")    

运行结果:
这里写图片描述
修改sample.txt:

FE 0A 00 03 03 FF 03 1A 01 FF 4A 99 69
FE 0A 00 03 03 FF 03 1A 01 FF 4A 99 69
FE 0A 00 03 03 FF 03 1A 01 FF 4A 99 69
FE 0A 00 03 03 FF 03 1A 01 FF 4A 99 69

这里文件有多行的话,就加用一个while循环:

with open('sample.txt','r') as f:
    line = f.readline().strip()
    while line:
        linestr = line.split(" ")
        print(linestr)       
        line = f.readline().strip()

运行结果:
这里写图片描述

如果想要把每一行当作一个list项的话,就采用read()函数:

with open('sample.txt','r') as f:
    line = f.read().strip()
    linestr = line.split("\n")         # 以换行符分隔
    print(linestr)
for i in range(0, len(linestr)):
    print(linestr[i]) 

运行结果:
这里写图片描述

这样每一项就是一整行

其实我也很想使用readlines()函数,它会自动把所有内容都放进一个list列表中,但莫名会出现很多空行:

with open('sample.txt','r') as f:
    line = f.readlines()
    while '\n' in line:             # 删除后面多余的'\n'项
        line.remove('\n')
    print(line, end="")

运行结果:
这里写图片描述

如果想要把全部行变为一个大列表,因为要分隔空格和换行符这两个分隔符,我们需要用到re模块:

import re
with open('sample.txt','r') as f:
    line = f.read().strip()
    result = re.split(r"[\s\n]", line)
    print(result)

运行结果:
这里写图片描述

难度再加大一点,如果给我们的sample.txt是这样的,怎样把它一个字节一个字节放进list呢?

FE0A000303FF031A01FF4A9969

这样就要先定义一个列表,之后一项一项append进去:

alist = []
with open('sample.txt', 'r') as f:
    line = f.read().strip()
    for i in range(0, len(line), 2):
        alist.append(line[i:i+2])
    print (' '.join(alist))
print(alist)

运行结果:
这里写图片描述

参考博客:

python中read、readline和readlines的区别

Python中使用多个分隔符分隔字符串re.split

python-列表删除所有指定元素

猜你喜欢

转载自blog.csdn.net/weixin_41656968/article/details/80904491