Извлечение определенных данных из текстового файла - PullRequest
0 голосов
/ 03 октября 2018

Привет всем, у меня есть файл, который содержит некоторую случайную информацию, но я хочу только ту часть, которая важна для меня.

name: Zack
age: 17
As Mixed: Zack:17
Subjects opted : 3
Subject #1: Arts
name: Mike
age: 15
As Mixed: Mike:15
Subjects opted : 3
Subject #1: Arts

Выше приведен пример моего текстового файла, который я хочу Зак: 17 и Майк: 15 часть, которая будет записана в текстовом файле, и все остальное, что будет проигнорировано.

Я посмотрел несколько видео на YouTube и наткнулся на оператор split в python, ноэто не сработало.

Пример моего кода

with open("/home/ninja/Desktop/raw.txt","r") as raw:
    for rec in raw:
        print rec.split('As Mixed: ')[0]

Это не сработало.Любая помощь действительно поможет мне завершить этот проект.Спасибо.

Ответы [ 2 ]

0 голосов
/ 03 октября 2018

Попробуйте это

import re
found = []
match = re.compile('(Mike|Zack):(\w*)')
with open('/hope/ninja/Destop/raw.twt', "r") as raw:
    for rec in raw:
        found.extend(match.find_all(rec))

print(found)
#output: [('Mike', '15'), ('Zack', '17')]

При этом используются регулярные выражения для поиска необходимого значения, в основном (Mike|Zack):(\w*) находит Майка или Зака, затем символ :, а затем столько слов, сколько он может найти.Чтобы узнать больше о регулярных выражениях вы можете прочитать с этого сайта: https://docs.python.org/3.4/library/re.html

0 голосов
/ 03 октября 2018

Вы можете разделить данные в : и получить только As Mixed параметр

content = [i.strip('\n').split(': ') for i in open('filename.txt')]
results = [b for a, b in content if a.startswith('As Mixed')]

Вывод:

['Zack:17', 'Mike:15']

Чтобы записать результаты в файл:

with open('filename.txt', 'w') as f:
  for i in results:
    f.write(f'{i}\n') 
...