将输入数据读取到具有多个分隔符和标题的数组
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)
请注意,以上代码仅针对数字和向量,其他部分需要您自行编码。
我正在尝试在 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)
请注意,以上代码仅针对数字和向量,其他部分需要您自行编码。