
本文旨在讲解如何使用 python 从文本文件中读取特定格式的数据,并将日期时间信息作为键,对应数值作为值,构建一个字典。我们将提供详细的代码示例,并解释其工作原理,帮助你轻松完成数据提取和转换的任务。
读取文本文件并提取数据
首先,我们需要打开文本文件并逐行读取其内容。假设我们的文本文件名为 mytext.txt,内容格式如下:
BBM 17/12/2023 15:15:04 1.85 2700.0 41857.9 BBM 17/12/2023 16:00:02 1.68 2698.0 41992.8 BBM 17/12/2023 16:45:04 1.6 2702.0 41908.3 BBM 17/12/2023 17:30:10 1.47 2706.0 41975.1 BBM 17/12/2023 18:15:02 1.35 2692.0 41934.5
我们的目标是将日期时间(例如 17/12/2023 15:15:04)作为键,对应的数值(例如 1.85)作为值,存储到字典中。
以下是实现此功能的 Python 代码:
立即学习“Python免费学习笔记(深入)”;
res = {} with open('mytext.txt', 'r') as f: data = f.readlines() for line in data: values = line.removeprefix('BBM ').split(' ') res[f'{values[0]} {values[1]}'] = values[2] print(res)
代码解释:
- res = {}: 创建一个空字典 res,用于存储提取的数据。
- with open(‘mytext.txt’, ‘r’) as f:: 使用 with open() 语句打开文件 mytext.txt,以只读模式 (‘r’) 打开。 with 语句确保文件在使用完毕后会被自动关闭,即使发生异常也是如此。
- data = f.readlines(): 使用 readlines() 方法读取文件的所有行,并将它们存储在一个名为 data 的列表中。 列表中的每个元素都是文件的一行文本。
- for line in data:: 循环遍历 data 列表中的每一行。
- values = line.removeprefix(‘BBM ‘).split(‘ ‘):
- line.removeprefix(‘BBM ‘): 从当前行 line 中移除前缀 “BBM “。
- .split(‘ ‘): 使用空格作为分隔符,将处理后的行分割成一个字符串列表 values。
- res[f'{values[0]} {values[1]}’] = values[2]:
- print(res): 打印生成的字典。
运行结果:
{'17/12/2023 15:15:04': '1.85', '17/12/2023 16:00:02': '1.68', '17/12/2023 16:45:04': '1.6', '17/12/2023 17:30:10': '1.47', '17/12/2023 18:15:02': '1.35'}
注意事项
- 文件路径: 确保 open() 函数中的文件路径是正确的。如果文件不在当前工作目录下,需要提供完整的文件路径。
- 数据类型: 提取的数值默认是字符串类型。如果需要进行数值计算,需要将其转换为 Float 类型,例如:res[f'{values[0]} {values[1]}’] = float(values[2])。
- 异常处理: 可以添加异常处理机制,例如使用 try…except 块来处理文件不存在或数据格式错误的情况。
- 数据清洗: 根据实际情况,可能需要对提取的数据进行进一步的清洗和处理,例如去除空格、处理缺失值等。
总结
本文介绍了如何使用 Python 从文本文件中提取特定格式的数据,并将日期时间信息作为键,对应数值作为值,构建一个字典。 通过灵活运用字符串操作、文件读取和字典操作,可以高效地处理各种文本数据提取任务。 记住根据实际情况调整代码,并进行适当的错误处理和数据清洗,以确保程序的稳定性和数据的准确性。


