Прочитайте текстовый файл и интерпретируйте данные -- python пол Связанный проблема

read a text file and interpret the data


1
vote

проблема

русский

Я должен написать программу, которая читает в текстовом файле, называемых «TESS.TXT», а затем сортирует файл и распечатывает его со ссылкой, с которой следует номера страниц. Это то, что выглядит файл:

 <код> 3:degree 54:connected 93:adjacent 54:vertex 19:edge 64:neighbor 72:path 55:shortest path 127:tree 99:spanning tree 19:path 28:connected 3:degree 55:graph 64:adjacent 44:breadth first search 77:neighbor 55:degree 55:depth first search 19:degree 27:neighbor 16:Spanning Tree   

И это то, что ему нужно, как после пробега через программу:

 <код> adjacent, 64, 93 breadth first search, 44 connected, 28, 54 degree, 3, 19, 55 depth first search, 55 edge, 19 graph, 55 neighbor, 27, 64, 77 path, 19, 72 shortest path, 55 spanning tree, 16, 99 tree, 127 vertex, 54   

Прямо сейчас, это то, что у меня есть, и это просто печатать список номеров страниц и список ссылок ... Я не уверен, откуда идти отсюда. Что-нибудь поможет!

 <код> def bookIndex2():     indexList = []     pageNum = []     file = open('terms.txt', 'r')     for line in file:         pageNumber, reference = line.split(':')           pageNum.append(pageNumber)         indexList.append(reference)     indexList.sort()     print(pageNum)     print(indexList)   
Английский оригинал

I have to write a program that reads in a text file called "terms.txt" and then sorts the file and prints it with the reference first followed by the page numbers. this is what the file looks like given:

3:degree 54:connected 93:adjacent 54:vertex 19:edge 64:neighbor 72:path 55:shortest path 127:tree 99:spanning tree 19:path 28:connected 3:degree 55:graph 64:adjacent 44:breadth first search 77:neighbor 55:degree 55:depth first search 19:degree 27:neighbor 16:Spanning Tree 

and this is what it should like like after being run through the program:

adjacent, 64, 93 breadth first search, 44 connected, 28, 54 degree, 3, 19, 55 depth first search, 55 edge, 19 graph, 55 neighbor, 27, 64, 77 path, 19, 72 shortest path, 55 spanning tree, 16, 99 tree, 127 vertex, 54 

Right now, this is what i have and it's just printing a list of the page numbers and a list of the references... I'm not sure where to go from here. Anything will help!

def bookIndex2():     indexList = []     pageNum = []     file = open('terms.txt', 'r')     for line in file:         pageNumber, reference = line.split(':')           pageNum.append(pageNumber)         indexList.append(reference)     indexList.sort()     print(pageNum)     print(indexList) 
</div
  

Список ответов

1
 
vote

Вы в основном нужно использовать словарь, который отображает ссылки на список номеров страниц. Когда вы повторяете файл, добавьте номер страницы в список для этой ссылки. После того, как вы обработали весь файл, сортируйте и распечатайте элементы словаря. Я рекомендую использовать <код> collections.defaultdict вместо Стандартный словарь, так как это довольно хорошо, создание словаря списков.

 <код> from collections import defaultdict  index = defaultdict(list) with open('terms.txt') as f:     for line in f:         page, reference = line.strip().lower().split(':')         index[reference].append(int(page))  for reference, pages in sorted(index.items()):     print "{}, {}".format(reference, ', '.join(str(i) for i in sorted(pages)))   
 

You basically need to use a dictionary that maps the references to a list of page numbers. As you iterate over the file, add the page number to the list for that reference. Once you have processed the whole file, sort and print the dictionary's items. I recommend using collections.defaultdict instead of the standard dictionary as this is quite good a building up a dictionary of lists.

from collections import defaultdict  index = defaultdict(list) with open('terms.txt') as f:     for line in f:         page, reference = line.strip().lower().split(':')         index[reference].append(int(page))  for reference, pages in sorted(index.items()):     print "{}, {}".format(reference, ', '.join(str(i) for i in sorted(pages))) 
</div
 
 
0
 
vote

Ваш результат выглядит как содержимое словаря, где клавиши являются терминами, и значения представляют собой списки номеров страниц. Идея будет: для каждой строки ввода добавьте этот номер страницы в список для этого срока (создание входа / списка при необходимости). Один словарь заполнен, просто пройдите клавиши для получения желаемого вывода.

 

Your result looks like the contents of a dictionary, where the keys are terms and the values are lists of page numbers. The idea would be: for each line of input, add that page number to the list for that term (creating the entry/list if needed). One the dictionary is filled up, just go through the keys in order to produce the desired output.

</div
 
 
 
 
0
 
vote

Это может помочь.

 <код> from collections import defaultdict  def bookIndex2():     file = open('terms.txt', 'r')     occurance_dict = defaultdict(list)     for line in file:         pageNumber, reference = line.split(':')           occurance_dict[reference].append(pageNumber)     for term, occurances in sorted(occurance_dict.items()):         print [term]+[occurances]   
 

This might help.

from collections import defaultdict  def bookIndex2():     file = open('terms.txt', 'r')     occurance_dict = defaultdict(list)     for line in file:         pageNumber, reference = line.split(':')           occurance_dict[reference].append(pageNumber)     for term, occurances in sorted(occurance_dict.items()):         print [term]+[occurances] 
</div
 
 
0
 
vote

Это очень сложно домашнее задание ...

 <код> from collections import defaultdict def bookIndex2():     file = open('terms.txt', 'r')     d = defaultdict(set)     for line in file:         num, name = line.strip().split(":")         d[name.lower()].add(num)     print " ".join(map(", ".join, [[name] + sorted(num, key=int) for name, num  in  sorted(d.items())]))   

Выход:

 <код> adjacent, 64, 93 breadth first search, 44 connected, 28, 54 degree, 3, 19, 55 depth first search, 55 edge, 19 graph, 55 neighbor, 27, 64, 77 path, 19, 72 shortest path, 55 spanning tree, 16, 99 tree, 127 vertex, 54   
 

It's very difficult homework...

from collections import defaultdict def bookIndex2():     file = open('terms.txt', 'r')     d = defaultdict(set)     for line in file:         num, name = line.strip().split(":")         d[name.lower()].add(num)     print " ".join(map(", ".join, [[name] + sorted(num, key=int) for name, num  in  sorted(d.items())])) 

output:

adjacent, 64, 93 breadth first search, 44 connected, 28, 54 degree, 3, 19, 55 depth first search, 55 edge, 19 graph, 55 neighbor, 27, 64, 77 path, 19, 72 shortest path, 55 spanning tree, 16, 99 tree, 127 vertex, 54 
</div
 
 
0
 
vote

Если вы ищете что-то более простое / легче понять, это может помочь :)

 <код> def bookIndex2():     appendix = {}      file = open('terms.txt', 'r')     for line in file:         pageNumber, reference = line.split(':')         reference = reference.rstrip()       "removes   characters"          if reference in appendix:             appendix[reference]=appendix[reference]+', '+pageNumber         else:             appendix.update({reference : pageNumber})      print appendix   

Приведенный выше код хранит ссылки как клавиши в словаре. Если ссылка уже существует, то номер страницы просто добавляется к существующей ссылке со запятой.

 

If you're looking for something a bit more simple/easier to understand, this might help :)

def bookIndex2():     appendix = {}      file = open('terms.txt', 'r')     for line in file:         pageNumber, reference = line.split(':')         reference = reference.rstrip()       "removes   characters"          if reference in appendix:             appendix[reference]=appendix[reference]+', '+pageNumber         else:             appendix.update({reference : pageNumber})      print appendix 

The above code stores references as keys in the dictionary. If a reference already exists, then the page number is just appended to the existing reference with a comma.

</div
 
 

Связанный проблема

-2  Обменная переменная или бесплатная переменная?  ( Is num a bound variable or a free variable ) 
<код> def function() num = 1 num += 1 return num Обменивается связанная переменная или бесплатная переменная? P.S. Этот код написан в Python...

98  Подключение к серверу Microsoft SQL с помощью Python  ( Connecting to microsoft sql server using python ) 
<Р> Я пытаюсь подключиться к SQL через питон для запуска некоторых запросов на некоторых базах данных SQL на сервере Microsoft SQL. Из моих исследований в Инте...

6  ReportLab 'LayoutError' Обработка и отладки  ( Reportlab layouterror handling and debugging ) 
Я работал с некоторыми сложными выходами PDF с ReportLab. Это, как правило, хорошо, но есть некоторые случаи, где я получаю LayoutErrors - это обычно потому, ...

2  Векторный способ применить 3-измерительную маску к RGB в Pytorch  ( Vectorized way to apply a 3 dimension mask to rgb in pytorch ) 
У меня есть тензор HXWX3, представляющий изображение RGB, и тензора RGBX3 (Boolean) Tensor в качестве ввода. Предполагается, что для каждого (i, j) в маске те...

0  Вызов частных методов для метода класса: Python  ( Calling private methods for class method python ) 
Я пытаюсь реализовать несколько конструкторов в Python, а одно из предложений (через онлайн-поиск) должен был использовать ClassMethod. Однако, используя это,...

1  Выполнить файл SQL, возвращать результаты как Pandas DataFrame  ( Execute sql file return results as pandas dataframe ) 
У меня есть сложный запрос SQL Server, который я хотел бы выполнить из Python и вернуть результаты в виде файла PandaFrame. Моя база данных читается только ...

-1  Ошибка Python OpenCV: (-215) Размер .Width> 0 && size.hight> 0 в функции imshow  ( Python opencv error 215 size width0 size height0 in function imshow ) 
Я запускаю эту программу, и это возвращает мне это сообщение об ошибке: Ошибка: (-215) Size.width & GT; 0 & AMP; & amp; Size.height & GT; 0 в функции imsho...

0  Питоновый способ Ифициализации булева  ( Pythonic way to initalize a boolean ) 
Это лучший / самый Pythonic способ инициализации логического значения для этой цели? <код> if start == today: b = date_time_obj <= start else: b = d...

5  Сайт к изображению  ( Website to image ) 
Я запускаю Python 3.1, и вы бы назвали меня продвинутым начинающим :) Мой вопрос простой: я пытаюсь сделать простую программу, которая просит пользователям ...

2  Скапировка не вызывает никакой другой функции после «__init__»  ( Scrapy not calling any other function after init ) 
ОС: Ubuntu 16.04 Стек - Scrapy 1.0.3 + Selenium Я довольно новичок в Scrape, и это может звучать очень простое, но в моем пауке только « init » выполняется. Л...

-3  Как публиковать данные в api api django  ( How to post data to django rest api ) 
У меня есть модель Django, которая выглядит как следующее: <код> [ { "ticker": "AAPL", "balance_sheet": [], "income_statement": ...

0  Использование Selenium Python при взаимодействии с веб-сайтом вручную  ( Using selenium python while interacting with a website manually ) 
Обновление: Я создал пользовательский профиль с совместимым способом IE в качестве по умолчанию и получить ту же сообщение об ошибке, поэтому кажется что-то о...

2  Высокое использование ЦП в ткани 1.0.0  ( High cpu usage in fabric 1 0 0 ) 
в ткани 0,9, все работает нормально, но в 1.0.0, следующий скрипт ткани показывает 100% загрузку CPU в <Код> top : <код> from fabric.api import run def tes...

1  Почему libleosa liblesa.feature.mfcc () выпрыгивает 2D массив?  ( Why does librosa librosa feature mfcc spit out a 2d array ) 
Вызов libleosa.feature.mfcc () в аудиофайле выплесет 2D-массив, как так: <код> array([[ -5.229e+02, -4.944e+02, ..., -5.229e+02, -5.229e+02], [ 7.105...

-1  Почему мои переменные выделены синим цветом? [закрыто]  ( Why are my variables highlighted in blue ) 
<в сторону CLASS = "S-NEWACTS S-WELTIVE__info JS-Post-New Imide MB16« Роль = «Статус»> закрыто. Этот вопрос не воспроизводится или был вызван опечаткам...