将输入数据读取到具有多个分隔符和标题的数组

Reading input data to array(s) with multiple delimiters and headings

我正在尝试在 python 中构建一个解析器来读取输入文件,然后 assemble 将结果放入多个数组中。

数据结构如下:

Some_numbers
1
5
6
some_vector
[-0.99612937 -0.08789929  0.        ]
[-0.99612937 -0.08789929  0.        ]
[ -9.99999987e-01   1.61260621e-04   0.00000000e+00]
Some_data
1239    #int    
671 
471 
851 
S4RS    #string
517 
18  
48  
912 
S4RS

目前我尝试过的方法有:

text_file = 'C:\AA\aa.txt'
lines = open(text_file).read().splitlines()
numbers = []
Vector = []
for line in lines:
    line = line.strip()
    if line.startswith('Some_numbers'):
        continue
        numbers.append(line)
    if line.startswith('some_vector'):
        continue
        Vector.append(line)

我遇到的问题是: 1)有多个定界符 2) 尝试根据相关部分拆分数据

我也尝试过使用 np.genfromtxt 以及无数小时的互联网搜索。

非常感谢您的意见和建议。

我不确定是否有任何内置函数或库函数可以解决这个问题,但您的 for 循环中存在一些明显的问题。

首先,在 if 块内 continue 之后的语句 - numbers.append(line)(或等效向量)。该语句永远不会执行,因为继续会将控制发送回 for 循环的开始,counter 变量递增。

其次,您没有根据 sections 阅读,这是您输入的内容,但我会说您几乎没有阅读任何东西。

一个可行的示例代码(对于数字和向量是)-

text_file = 'C:\AA\aa.txt'
lines = open(text_file).read().splitlines()
numbers = []
Vector = []
section = ''
for line in lines:
    line = line.strip()
    if line.startswith('Some_numbers'):
        section = 'numbers'
        continue
    elif line.startswith('some_vector'):
        section = 'vectors'
        continue
    elif section == 'numbers':
        numbers.append(line) # or numbers.append(int(line)) , whichever you want
    elif section == 'vectors':
        Vector.append(line)

请注意,以上代码仅针对数字和向量,其他部分需要您自行编码。