2022-04-05 关于join

l=""
>>>l=",".join("123")
>>>print(l)
1,2,3
>>>print(type(l))

a=["123","3"]
>>> s="".join(a)
>>> print(s)
1233
>>> print(type(s))

f=open("score.txt","r",encoding="utf-8")
s=f.readlines()
print(s)
print(type(s))
lll=""
for l in s:
    ll=l.split()
    cc=l.split(" ")
    print("这是cc:{}".format(cc))
    print(ll)
    lll+=" ".join(ll)+"\n"   
print("最后输出:{}".format(lll[:-1]))
f.close()

['学号 姓名 专业 笔试 平时 实验\n', 'SA21234015 李子豪 凝聚态物理 90 87 90\n', 'SA21234010 孟鑫勇 垃圾治理 80 90 90']

这是cc:['学号', '姓名', '专业', '笔试', '平时', '实验\n']
['学号', '姓名', '专业', '笔试', '平时', '实验']
这是cc:['SA21234015', '李子豪', '凝聚态物理', '90', '87', '90\n']
['SA21234015', '李子豪', '凝聚态物理', '90', '87', '90']
这是cc:['SA21234010', '孟鑫勇', '垃圾治理', '80', '90', '90']
['SA21234010', '孟鑫勇', '垃圾治理', '80', '90', '90']
最后输出:学号 姓名 专业 笔试 平时 实验
SA21234015 李子豪 凝聚态物理 90 87 90
SA21234010 孟鑫勇 垃圾治理 80 90 90

split()默认以空格分隔,空格包含\n,而图中的.split(" ")仅仅以空格分隔,不包含\n。

.read(2) 读取前两个字符
.readline(3)读取第一行前3个字符
。readlines(3)读取文件前三行

全文本处理读入

fname = input("请输入要打开的文件名称:")
fo = open(fname,"r")
txt = fo.read()
#这一部分对全文txt进行处理
fo.close()

万一这文件有亿点大,一次性读入内存,太难了。

fname = input("请输入要打开的文件名称:")
fo = open(fname,"r")
txt = fo.read(2)
while txt != "":
#对txt进行处理
txt = fo.read(2)
fo.close()

一次读入两个字符,只要不空,接着读,这是一种思路

fname = input("请输入要打开的文件名称:")
fo = open(fname,"r")
for line in fo.readlines():
print(line)
fo.close()

这是一次读入,分行处理,也很消耗内存

fname = input("请输入要打开的文件名称:")
fo = open(fname,"r")
for line in fo:
print(line)
fo.close(

这是分行读入,逐行处理,这里直接,for in +文件句柄,这种玩法没见过???

.write(s) 写入s字符串
.writelines(lines),将一个元素全为字符串的列表写入文件,如下:

>>>ls = ["中国", "法国", "美国"]
>>>f.writelines(ls)
中国法国美国

将列表的元素拼接成字符串写入,很好!刚才我为了这个问题 白费事了

f=open("testtext1.txt","a+",encoding="utf-8")
f.writelines(["\ne","3"])
f.seek(0)
for line in f:
    print(line)
f.close()

怪不得刚才我用"a+"追加写,写完之后,read全是空的,因为写完之后,光标跑到最后面去了,读完就啥也没,seek可以把光标移动,0为文件开头。
0 – 文件开头; 1 – 当前位置; 2 – 文件结尾

你可能感兴趣的:(2022-04-05 关于join)