2017-02-18 19 views
-2

используя python, я хочу отделить файл данных. Форма файла - это текстовый файл, и между внутренними данными нет вкладок только одно пространство.Используя данные текстового файла, классифицируйте и создайте другой текстовый файл в python

здесь пример файла,

//test.txt 
    Class name age room fund. 
    13 A 25 B101 300 
    12 B 21 B102 200 
    9 C 22 B103 200 
    13 D 25 B102 100 
    20 E 23 B105 100 
    13 F 25 B103 300 
    11 G 25 B104 100 
    13 H 22 B101 300 

Я хочу взять только строки, содержащие конкретные данные,

класс: 13, фонд 300

и сохранить другой текстовый файл ,

, если этот код работал, делая текстовый файл, что

//new_test.txt 
    Class name age room fund. 
    13 A 25 B101 300 
    13 F 25 B103 300 
    13 H 22 B101 300 

спасибо. Hk

ответ

0

Это должно быть сделано.

with open('new_test.txt','w') as new_file: 
    with open('test.txt') as file: 
     print(file.readline(),end='',file=new_file) 
     for line in file: 
      arr=line.strip().split() 
      if arr[0]=='13' and arr[-1]=='300': 
       print(line,end='',file=new_file) 

Однако при обращении к вопросу вы должны указать свой код. Это гарантирует, что цель этого сайта будет обслуживаться.

+0

Я так сожалею, я забыл, что присоединять свой код. спасибо за ваше замечание. –

0

Если вы хотите, чтобы фильтровать данные:

def filter_data(src_file, dest_file, filters): 
    data = [] 
    with open(src_file) as read_file: 
     header = [h.lower().strip('.') for h in read_file.readline().split()] 
     for line in read_file: 
      values = line.split() 
      row = dict(zip(header, values)) 
      data.append(row) 
      for k, v in filters.items(): 
       if data and row.get(k, None) != v: 
        data.pop() 
        break 

    with open(dest_file, 'w') as write_file: 
     write_file.write(' '.join(header) + '\n') 
     for row in data: 
      write_file.write(' '.join(row.values()) + '\n') 


my_filters = { 
    "class": "13", 
    "fund": "300" 
} 

filter_data(src_file='test.txt', dest_file='new_test.txt', filters=my_filters)