Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用多个分隔符和标题将输入数据读取到数组_Python_Arrays_String_Parsing_Delimiter - Fatal编程技术网

Python 使用多个分隔符和标题将输入数据读取到数组

Python 使用多个分隔符和标题将输入数据读取到数组,python,arrays,string,parsing,delimiter,Python,Arrays,String,Parsing,Delimiter,我正在尝试用python构造一个解析器来读取一个输入文件,然后将结果组装成几个数组 数据具有以下结构: 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 8

我正在尝试用python构造一个解析器来读取一个输入文件,然后将结果组装成几个数组

数据具有以下结构:

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
块-
numbers.append(line)
(或等效向量)中的
continue
后面的语句。此语句将永远不会执行,因为continue将把控件发送回
for
循环的开始,而
计数器
变量将递增

第二,你没有阅读基于
部分的内容,这就是你输入的内容,尽管我想说你根本没有阅读任何东西

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

请注意,以上代码仅适用于数字和向量,其他部分需要您进行编码

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)