封装文件操作与数据处理

27、用一个类封装文本文件。编写一个类,该类接受一个文件名并将相应文件中的数据作为文本读取。使该类具有三个方法:paragraph、line、word,每个方法都接受一个整数参数,这样如果 mywrapper 是这个类的一个实例,mywrapper.paragraph(0) 会输出文件的第一段,mywrapper.line(-2) 会输出文件中倒数第二行,mywrapper.word(3) 会输出文件中的第四个单词。

以下是实现该功能的Python代码:

class FileWrapper:
    def __init__(self, filename):
        with open(filename, 'r', encoding='utf-8') as file:
            self.content = file.read()
            self.lines = self.content.splitlines()
            self.paragraphs = self.content.split('\n\n')
            self.words = self.content.split()

    def paragraph(self, index):
        return self.paragraphs[index]

    def line(self, index):
        return self.lines[index]

    def word(self, index):
        return self.words[index]

你可以使用以下方式测试这个类:

# 假设你有一个名为 'test.txt' 的文件
mywrapper = FileWrapper('test.txt')
print(mywrapper.paragraph(0))
print(mywrapper.line(-2))
print(mywrapper.word(3))

这段代码定义了一个 FileWrapper 类,在初始化时读取文件内容,并将其拆分为段落、行和单词。 paragraph line word 方法分别用于根据索引获取相应的段落、行和单词。

28、如何复制一个列表对象?那字典呢?

要复制一个列表对象,最简单的方法是使用切片操作。例如,如果 myList 是一个列表,那么可以通过 newList = myList[:] 来复制它,这可以理解为“从开始到结束进行切片”。

对于字典,由于字典不支持切片操作,要复制一个字典 myDict ,可以使用如下代码:

newDict = {}
for key in myDict.keys():
    newDict[key] = myDict[key]

此外,在 90% 的情况下,列表的 [:] 操作和字典的 .copy() 方法可以实现复制。

如果需要编写能处理任意类型参数的函数,有时需要使用 copy 模块。该模块提供了 copy deepcopy 两个函数, copy 函数类似于列表的 [:] 切片操作或字典的 copy 方法。

29、编写一个程序来计算文件中的行数。

以下是一个可以计算文件行数的Python程序示例:

import sys
lines = sys.stdin.readlines()
lin
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值