我正在尝试从协作者发送给我的一组文件中提取一些信息。每个文件都包含一些 python 代码,这些代码命名了一系列列表。它们看起来像这样:
#PHASE = 0
x = np.array(1,2,...)
y = np.array(3,4,...)
z = np.array(5,6,...)
#PHASE = 30
x = np.array(1,4,...)
y = np.array(2,5,...)
z = np.array(3,6,...)
#PHASE = 40
...
等等。总共有 12 个文件,每个文件有 7 个阶段集。我的目标是将每个阶段转换成它自己的文件,然后可以由 ascii.read() 作为 Table 对象读取该文件,以便在不同的代码部分中进行操作。
我当前的方法无论是在资源还是组装所需的时间/精力方面都效率极低。它是这样的:从一个函数开始
def makeTable(a,b,c):
output = Table()
output['x'] = a
output['y'] = b
output['z'] = c
return output
然后,对于每个阶段,我都手动将文本文件的相关部分复制粘贴到单元格中,并附加一行代码
fileName_phase = makeTable(a,b,c)
重复令人作呕。处理所有数据需要 84 次迭代,自然每次都需要一些小的调整来匹配特定的文件名和阶段。
最后,在代码末尾,我将几行代码设置为 ascii。将每个表写入 .dat 文件以供以后操作。
整个方法的设置非常费力。如果这是处理数据的唯一方法,我会这样做。不过,我希望我能找到一种更快的方法来设置它。有没有可以推荐的?
最佳答案
如果效率和代码重用而不是复制是目标,我认为类可能提供一个好方法。我现在要 sleep 了,稍后再编辑。这是我的想法:创建一个名为 FileWithArrays 的类,并使用解析器读取这些行并将它们放入您将使用该类创建的对象 FileWithArrays 中。完成后,您可以创建一个方法来转换表中的对象。
附注对于解析器来说,一个好主意是将所有行存储在列表中并逐一解析它们,使用 list.pop() 自动缩小列表。希望它有帮助,如果这没有多大帮助,明天我会进一步研究它。如果我误解了任何内容,请尝试重写/重新格式化问题,这不是很容易阅读。
关于python - 从非常规文本文件中提取信息? (Python),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42686037/