gpt4 book ai didi

python - 使用 Python 2.7 解析文本

转载 作者:行者123 更新时间:2023-11-28 17:35:40 24 4
gpt4 key购买 nike

文本文件

• I.D.: AN000015544 
DESCRIPTION: 6 1/2 DIGIT DIGITAL MULTIMETER
MANUFACTURER: HEWLETT-PACKARDMODEL NUM.: 34401A CALIBRATION - DUE DATE:6/1/2016 SERIAL NUMBER: MY45027398
• I.D.: AN000016955
DESCRIPTION: TEMPERATURE CALIBRATOR
MANUFACTURER: FLUKE MODEL NUM.: 724 CALIBRATION - DUE DATE:6/1/2016 SERIAL NUMBER: 1189063
• I.D.: AN000017259
DESCRIPTION: TRUE RMS MULTIMETER
MANUFACTURER: AGILENT MODEL NUM.: U1253A CALIBRATION - DUE DATE:6/1/2016 SERIAL NUMBER: MY49420076
• I.D.: AN000032766
DESCRIPTION: TRUE RMS MULTIMETER
MANUFACTURER: AGILENT MODEL NUM.: U1253B CALIBRATION - DUE DATE:6/1/2016 SERIAL NUMBER: MY5048 9036

目标

寻求更有效的算法来解析制造商名称和编号。即“惠普型号:34401A”、“安捷伦型号:U1253B”等。从上面的文本文件。

数据结构

parts_data = {'Model_Number': []}

代码

with open("textfile", 'r') as parts_info:
linearray = parts_info.readlines(
for line in linearray:
model_number = ''
model_name = ''
if "MANUFACTURER:" in line:
model_name = line.split(':')[1]
if "NUM.:" in line:
model_number = line.split(':')[2]
model_number = model_number.split()[0]
model_number = model_name + ' ' + model_number
parts_data['Model_Number'].append(model_number.rstrip())

我的代码完全符合我的要求,但我认为有一种更快或更简洁的方法来完成操作。让我们提高效率吧!

最佳答案

您的代码看起来已经不错了,除非您解析的数据超过 GB,否则我不知道这样做有什么意义。我想到了一些事情。

如果您删除 linearray = parts_info.readlines( 行 Python 只理解对打开的文件使用 for 循环,这样就可以流式传输 以防万一你的文件很大。目前,这行代码会尝试一次将整个文件读入内存,而不是逐行读取,所以如果你的文件比你的内存大,你的计算机就会崩溃。

您还可以组合 if 语句并执行 1 条件,因为您似乎只关心拥有两个字段。为了使代码更简洁,您也不需要 model_number = ''; model_name = ''

保存诸如 line.split(':') 之类的结果会有所帮助。

或者,您可以尝试正则表达式。如果不对两者都进行测试,就不可能判断哪一个会表现得更好,这让我回到了我一开始所说的:优化代码很棘手,如果没有必要,真的不应该这样做。如果你真的非常关心效率,你会使用像 awk 这样用 C 编写的程序。

关于python - 使用 Python 2.7 解析文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30868697/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com