2016-11-25 2 views
0

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

1 
Subpop 0 best fitness of run: Fitness: Standardized=73.0 Adjusted=0.013513513513513514 Hits=16 
2 
Subpop 0 best fitness of run: Fitness: Standardized=61.0 Adjusted=0.016129032258064516 Hits=28 
3 
Subpop 0 best fitness of run: Fitness: Standardized=73.0 Adjusted=0.013513513513513514 Hits=16 
4 
Subpop 0 best fitness of run: Fitness: Standardized=70.0 Adjusted=0.014084507042253521 Hits=19 
5 
Subpop 0 best fitness of run: Fitness: Standardized=72.0 Adjusted=0.0136986301369863 Hits=17 
6 
Subpop 0 best fitness of run: Fitness: Standardized=67.0 Adjusted=0.014705882352941176 Hits=22 
7 
Subpop 0 best fitness of run: Fitness: Standardized=65.0 Adjusted=0.015151515151515152 Hits=24 
8 
Subpop 0 best fitness of run: Fitness: Standardized=73.0 Adjusted=0.013513513513513514 Hits=16 
9 
Subpop 0 best fitness of run: Fitness: Standardized=78.0 Adjusted=0.012658227848101266 Hits=11 
10 
Subpop 0 best fitness of run: Fitness: Standardized=65.0 Adjusted=0.015151515151515152 Hits=24 

Я пытаюсь использовать Python для извлечения числа из «стандартизованного» и «Hits» срезы каждой строке и помещать их в свои собственные списки, но я не знаком с чтением из файлов в Python. Какой был бы лучший способ сделать это?

+0

что вы пробовали? возможно, начинайте здесь: http: //stackoverflow.com/questions/19508703/how-to-open-a-file-through-python – jprockbelly

+0

В настоящее время я могу открыть файл, и я попытался помещать каждое содержимое строк в список, но отсюда вещи становятся достаточно сложными, и я думаю, что должно быть более элегантное решение. – theguyty

ответ

2

Обычно мы не пишем код для людей, но, похоже, это может быть не домашнее задание. Я также хочу указать важный момент.

Файл является итерируемым строками с завершающим символом символом строки. Список строк с завершающим символом строки также является таким итерабельным. Поэтому начните с разработки для разработки и перейдите к открытому файлу позже, когда код работает в списке в коде. Не делать этого, на мой взгляд, большая ошибка и источник проблем.

Далее, повторите и перетащите «мусорные линии». Затем анализируем линии выплаты и выполняем любую обработку извлеченных данных. Анализ зависит от проблемы. Ниже я использую разделительные линии и методы разделения.

file = '''\ 
1 
Subpop 0 best fitness of run: Fitness: Standardized=73.0 Adjusted=0.013513513513513514 Hits=16 
2 
Subpop 0 best fitness of run: Fitness: Standardized=61.0 Adjusted=0.016129032258064516 Hits=28 
3 
Subpop 0 best fitness of run: Fitness: Standardized=73.0 Adjusted=0.013513513513513514 Hits=16 
4 
Subpop 0 best fitness of run: Fitness: Standardized=70.0 Adjusted=0.014084507042253521 Hits=19 
5 
Subpop 0 best fitness of run: Fitness: Standardized=72.0 Adjusted=0.0136986301369863 Hits=17 
'''.splitlines(keepends=True) 

stand = [] 
hits = [] 

for line in file: 
    if len(line) < 50: 
     continue 
    fields = line.split('=') 
    stand.append(float(fields[1].split()[0])) 
    hits.append(int(fields[3].split()[0])) 

print(stand) 
print(hits) 
# prints 
# [73.0, 61.0, 73.0, 70.0, 72.0] 
# [16, 28, 16, 19, 17] 
+0

Зачем нужен len check? Len (строка) <50? – MYGz

+0

@MohammadYusufGhazi пропустить короткие строки, как и первый: '1 \ n'. Попробуйте удалить чек и посмотреть, что произойдет. –

+0

Спасибо, это было очень полезно! – theguyty

Смежные вопросы