Python程序设计 文件处理(三)

27 篇文章 7 订阅

练习十二 文件处理

第1关:红楼梦文件分章

test文件夹下红楼梦.txt文件如下图所示

每章回的标题行为上卷或下卷开头,后面为空格和第x回。 编写程序,将文件按章回分隔为多个文本文件,文件名为上卷第x回或下卷第x回,文件名中没有空格,存储在test的hlm文件夹下,文件列表如下所示。(即第一回文件为test/hlm/上卷第一回.txt)

注意:在新文件中,没有空行,且每行去除首尾的空格, 章回的标题行后换行,其他行不要换行 如下图所示

import shutil
shutil.rmtree("test/hlm")
import os
os.mkdir("test/hlm")
f1=open("test/红楼梦.txt","r",encoding="utf8")
#代码开始

for i in f1:
    i = i.strip()
    if " " in i and "," not in i and "。" not in i and "." not in i and "?" not in i and "卷" in i:    
        a = i[:i.find("卷")+1]
        b = i[i.find("第"):i.find("回")+1]
        f2 = open("test/hlm/"+a+b+".txt","a+")
        f2.write(i+"\n")
    else:
        f2.write(i)

f2.close()
#代码结束
f1.close()

 第2关:三国演义分章

test文件夹下的三国演义.txt如下图所示 每章回的标题行开头为正文空格第x回(设置判断条件为该行包含正文即可)

编写程序,将文件按回分割为多个文本文件,文件名为第x回,存放在test的sgyy文件夹下,文件列表如图所示.即第一回的文件为test/sgyy/第一回.txt

 新文件中需去掉空行,去掉每行的首尾空格,如下所示 标题行后面换行,其他行不换行 

import shutil
shutil.rmtree("test/sgyy")
import os
os.mkdir("test/sgyy")
f1=open("test/三国演义.txt","r",encoding="utf8")
#代码开始
for i in f1:
    i = i.strip()
    if "第" in i and "回" in i and "正文" in i:
        name = i[i.find("第"):i.find("回")+1]
        f2 = open("test/sgyy/"+name+".txt","a+")
        f2.write(i+"\n")
    else:
        f2.write(i)
#代码结束
f1.close()

 第3关:四级词汇划分

test文件夹下四级词汇.txt文件如下图所示,每行有单词、词性和解释

编写程序,将文件划分为多个文本文件,文件名为字母a到z,存储在test的dc文件夹下,文件列表如下所示。

 在新文件中,以某字母开头的单词都存储在该字母文件中,如下图所示。 注意:该题中要求文件名都是小写字母,以大写字母开头的单词也存储在小写字母开头的文件中。 写入文件时需要去掉每行的首尾空格。

import shutil
shutil.rmtree("test/dc")
import os
os.mkdir("test/dc")
f1=open("test/四级词汇.txt","r",encoding="utf8")
#代码开始
for i in range(65,91):
    f3 = open("test/dc/"+chr(i)+".txt","a+")
f3.close()

for i in f1:
    i = i.strip()
    name = i[0]
    if name.isupper():
        name = name.lower()
    f2 = open("test/dc/"+name+".txt","a+")
    f2.write(i+"\n")

f2.close()
#代码结束
f1.close()

第4关:省级行政区划分

test文件夹下行政区划.txt文件如下图所示,每行有代码和行政区域名称两列

其中,省级行政区划代码的后四位是0000。编写程序,将文件按省级行政区划分为多个文本文件,文件名为行政区域名称,例如天津市、河北省、澳门特别行政区等,存储在test的dq文件夹下,文件列表如下所示

 在新文件中,存储该行政区的所有编码和地区。 没有空行,且每行去除首尾的空格。 如下图所示

import shutil
shutil.rmtree("test/dq")
import os
os.mkdir("test/dq")
f1=open("test/行政区划.txt","r",encoding="utf8")
#代码开始

for i in f1:
    i = i.strip()
    if i[2:6]=="0000":
        f2 = open("test/dq/"+i[6:]+".txt","a+")
    f2.write(i+"\n")
f2.close()
#代码结束
f1.close()

第5关:诗词文本文件分隔

诗词文件sc.txt存储在test文件夹下 内容为多首诗词 每首诗内容如图所示,标题行为诗名和作者,中间由空格隔开 (判断标题行的标准是去除首尾空格后,有空格且没有逗号或句号)

下面是诗的内容 编程将每首诗存储为一个文本文件,存储在test文件夹的ts文件夹下。文件名为诗名.txt,例如观沧海.txt

 文件的第一行为诗名 第二行为作者 第三行及后面为诗词的内容

注意:文件建立在test文件夹的ts文件夹下 即test/ts/观沧海.txt

import shutil
import os
if os.path.exists("test/ts"):
    shutil.rmtree("test/ts")
os.mkdir("test/ts")
f1=open("test/sc.txt")
#代码开始
for i in f1:
    i = i.strip()
    if " " in i and "。" not in i and "," not in i:
        sm = i[:i.find(' ')]
        sr = i[i.find(" ")+1:]
        f2 = open("test/ts/"+sm+".txt","a+")
        f2.write(sm+"\n"+sr+"\n")
    else:
        f2.write(i+"\n")
 
f2.close()
#代码结束
f1.close()

第6关:诗词文本文件查找及新建

诗词文件sc.txt存储在test文件夹下 内容为多首诗词 每首诗内容如图所示,标题行为诗名和作者,中间由空格隔开

 下面是诗的内容 编程输入诗名,如果该诗没有在文件中,显示没有此诗。 如果在文件中,建立一个文本文件,存储在test文件夹的ts文件夹下。文件名为诗名.txt,例如观沧海.txt

注意:文件建立在test文件夹的ts文件夹下 即test/ts/观沧海.txt

import shutil
import os
if os.path.exists("test/ts"):
    shutil.rmtree("test/ts")
os.mkdir("test/ts")
f1=open("test/sc.txt")
x=input("诗名")
#代码开始
n = 0
for i in f1:
    if " " in i and "。" not in i and "," not in i:
        sm = i[:i.strip().find(" ")]
        f2 = open("test/ts/"+sm+".txt","a+")
        if sm == x:
            n += 1
    f2.write(i)
if n == 0:
    print("没有此诗")

f2.close()
#代码结束
f1.close()

 第7关:建立文件夹及唐诗文件

 test文件夹下小学诗词.txt文件如下图所示

包括一年级上册到六年级下册的多首诗词 每首诗词的第一行是诗名空格和朝代点号作者 第二行是诗文,各句没有分行 编写程序,在test的xssc1文件夹下按年级建立十二个文件夹

 将每个年级的诗词存放在该文件夹下 文件名为诗名.txt 例如一年级上文件夹下有两个文件

在文本文件中, 第一行是诗名 第二行是朝代点号作者 其他行是诗句 每句是一行(以句号为结尾)

import shutil
shutil.rmtree("test/xxsc1")
import os
os.mkdir("test/xxsc1")
f1=open("test/小学诗词.txt")
#代码开始
f = 0
for i in f1:
    i = i.strip()
    if "【" in i:
        name = i[1:5]
        s = "test/xxsc1/" + name
        if not os.path.isdir(s):
            os.mkdir(s)
    elif " " in i and "。" not in i and "," not in i: 
        sm = i[:i.find(" ")]
        sr = i[i.find(" ")+1:].strip()
        f = 1
        f2 = open("test/xxsc1/"+name+"/"+sm+".txt","a+")
        f2.write(sm+"\n"+sr+"\n")
    else:
        if len(i)>2 and f:
            i = i.replace("。","。\n")
            f2.write(i)
f2.close()  
#代码结束
f1.close()

第8关:建立朝代文件夹及唐诗文件

test文件夹下小学诗词.txt文件如下图所示

包括一年级上册到六年级下册的多首诗词 每首诗词的第一行是诗名空格和朝代点号作者 第二行是诗文,各句没有分行 编写程序,在test的xssc1文件夹下按朝代建立七个文件夹

  

将每个朝代的诗词存放在该文件夹下 文件名为诗名.txt 例如清文件夹下有五个文件

 在文本文件中, 第一行是诗名 第二行是朝代点号作者 其他行是诗句 要分行显示(以逗号、句号、惊叹号、问号为结尾)

import shutil
shutil.rmtree("test/xxsc2")
import os
os.mkdir("test/xxsc2")
f1=open("test/小学诗词.txt")
#代码开始
f = 0
for i in f1:
    i = i.strip()
    if "【" in i:
        continue
    elif " " in i and "。" not in i and "," not in i:
        a = i.find(" ")
        sm = i[:a]
        sr = i[a+1:].strip()
        cd = i[a+1:i.find(".")].strip()
        f = 1
        s = "test/xxsc2/" + cd
        if not os.path.isdir(s):
            os.mkdir(s)
        f2 = open("test/xxsc2/"+cd+"/"+sm+".txt","a+")
        f2.write(sm+"\n"+sr+"\n")
    else:
        if len(i)>2 and f:
            i = i.replace("。","。\n").replace(",",",\n").replace("?","?\n").replace("!","!\n").replace(" ","")
            f2.write(i)

f2.close()
#代码结束
f1.close()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值