2015-11-25 6 views
0

У меня есть файл с кучей чисел, но есть заголовки, которые мешают мне делать многое. Файл выглядит следующим образом:Python - как я могу читать числа в файле как целые числа, но с заголовками?

x: 
1 2 3 4 

f: 
5 6 7 8 

h: 
9 10 11 12 13 

поэтому у меня есть эта программа, я верю, помогу мне получить доступ к номерам, но я получаю сообщение об ошибке о нем.

filename = input('file: ') 
f = open(filename, 'r') 
output=[] 
w, h = map(int,lines.split()) 
x=[] 
for i, line in enumerate(f): 
    if i == h: 
     break 
    x.append(map(int,line.split()[:w])) 
output.append(x) 

Так что я попробовал разметку заголовков, но я получаю сообщение об ошибке о том, что это строка и т. Д.

filename = input('file: ') 
f = open(filename, 'r') 
output=[] 
func = f.readline() 
lines = func.strip('x').strip('f').strip('h').split() 
w, h = map(int,lines.split()) 
x=[] 
for i, line in enumerate(f): 
    if i == h: 
     break 
    x.append(map(int,line.split()[:w])) 
output.append(x) 

любой совет?

+0

Что такое ошибка, что вы получите? – Illusionist

+0

это о заголовках и как я не могу сделать «х» и т. Д. Целое число – preposity

+0

Можете ли вы уточнить свой ожидаемый результат? Это просто список номеров или релевантные заголовки? Я имею в виду, вы ожидаете '{'x': [1, 2, 3, 4], 'f': [5, 6, 7, 8], 'h': [9, 10, 11, 12, 13] } 'или' [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13] ' –

ответ

0

Если заголовок отличается, разберитесь следующим образом?

x -> [1,2,3,4] 
f -> [5,6,7,8] 
h -> [9,10,11,12,13] 

Это вы, что вы после?

+0

да! Я хочу их в массиве. У меня проблемы с получением их не как строки, но с заголовками, я сталкиваюсь с проблемами. – preposity

+0

Что можно сделать для заголовков? Можете ли вы написать для него регулярное выражение? – ncmathsadist

0

Просто прочитайте файл нормально и разделите все символы? Быстрый код, не проверенный, но вы должны легко адаптироваться.

import re 

with open (filename, "r") as myfile: 
    for line in myfile.readlines(): 
     data =re.sub(r"\D", "", line) 
0

parsefile.py:

import re 

with open('file.txt', 'rU') as data: 
    mydict = {} 
    for line in data: 
     varname = re.search('(\w+):', line) 
     if varname: 
      mydict[varname.group(1)] = [int(num) for num in data.next().split()] 
    print 'x = ', mydict['x'] 
    print 'f = ', mydict['f'] 
    print 'h = ', mydict['h'] 

file.txt:

x: 
1 2 3 4 

f: 
5 6 7 8 

h: 
9 10 11 12 13 

выход:

(parsedigitsheaders)macbook:parsedigitsheaders joeyoung$ python parsefile.py 
x = [1, 2, 3, 4] 
f = [5, 6, 7, 8] 
h = [9, 10, 11, 12, 13] 
Смежные вопросы