gpt4 book ai didi

python - 寻找解析文件的策略

转载 作者:太空宇宙 更新时间:2023-11-04 06:12:08 25 4
gpt4 key购买 nike

我是一名经验丰富的 C 程序员,但完全是 Python 新手。我学习 Python 主要是为了好玩,作为第一个练习,我想解析一个文本文件,从无意义的内容中提取有意义的位,并以不同顺序的制表符分隔字符串结束。

我在教程和文档以及 stackoverflow 问答中大放异彩,愉快地拆分字符串并从文件中读取行等。现在我想我正处于需要经验丰富的人提供一些路标以避免的地步死胡同。

这是我要解析的一段文本(您可能认为这是 McMaster 命令)。实际文件将包含一个或多个这样的 block 。

1   92351A603   Lag Screw for Wood, 18-8 Stainless Steel, 5/16" Diameter, 5" Long, packs of 5
Your Part Number: 7218-GYROID
22
packs today
5.85
per pack 128.70

请注意,信息在文件中分为几行。我想以制表符分隔的字符串结束,如下所示:

22\tpacks\tLag Screw for Wood, 18-8 Stainless Steel, 5/16" Diameter, 5" Long, packs of 5\t\t92351A603\t5.85\t\t128.70\t7218-GYROID\n

所以我需要提取字符串的一些部分而忽略其他部分,将它们重新排列一下,然后重新打包成一个字符串。

这是我现在的(非常早的)代码,它一次读取文件一行,用定界符分隔每一行,最后我得到几个字符串列表,包括一堆空字符串是双标签:

import sys
import string

def split(delimiters, string, maxsplit=0):
"""Split the given string with the given delimiters (an array of strings)
This function lifted from stackoverflow in a post by Kos"""
import re
regexPattern = '|'.join(map(re.escape, delimiters))
return re.split(regexPattern, string, maxsplit)

delimiters = "\t", "\n", "\r", "Your Part Number: "
with open(sys.argv[1], 'r') as f:
for line in f:
print(split( delimiters, line))

f.close()

问题 1 是基本问题:如何从我的列表中删除空字符串,然后将所有字符串混合到一个列表中?在 C 中,我将遍历所有列表,忽略空字符串并将其他字符串粘贴到新列表中。但我感觉 Python 有一种更优雅的方式来做这类事情。

问题 2 更为开放:什么是稳健的策略?首先,我应该一次读多行吗?制作一本字典,以便以后更轻松地重新排序项目?

对不起小说。感谢您的指点。非常欢迎风格评论,风格很重要。

最佳答案

使用 with 时不需要close 文件。

如果我要实现它。我可能会使用一个大的正则表达式从每个 block 中提取部分(使用 finditer),然后重新组装它们以进行输出。

关于python - 寻找解析文件的策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18199699/

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