манипуляция с питоном - PullRequest
0 голосов
/ 03 марта 2010

У меня есть файл с записями, такими как: 26 1 33 2 , , .

и еще один файл с предложениями на английском

Я должен написать скрипт для печати первого слова в предложении № 26 и второе слово в предложении 33. Как мне это сделать?

Ответы [ 4 ]

2 голосов
/ 03 марта 2010

Следующий код должен выполнить задачу. С предположениями, что файлы не слишком велики. Возможно, вам придется внести некоторые изменения, чтобы иметь дело с крайними случаями (например, с двойным пробелом и т. Д.)

# Get numers from file
num = []
with open('1.txt') as file:
    num = file.readlines()

# Get text from file    
text = []
with open('2.txt') as file:
    text = file.readlines()

# Parse text into words list.
data = []
for line in text:                    # For each paragraoh in the text
    sentences = l.strip().split('.') # Split it into sentences
    words = []
    for sentence in sentences:       # For each sentence in the text
        words = sentence.split(' ')  # Split it into words list
        if len(words) > 0:
            data.append(words)

# get desired result
for i = range(0, len(num)/2):
     print data[num[i+1]][num[i]]
1 голос
/ 03 марта 2010

Вот общий эскиз:

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

Теперь, если вы покажете, как пытались реализовать это в Python, вам, вероятно, понадобится дополнительная помощь.

0 голосов
/ 03 марта 2010

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

Также я предполагаю, что слова разделены пробелами.

sentences = []
queries = []
english = ""

for line in file2:
    english += line
while english:
    period = english.find('.')
    sentences += english[: period+1].split()
    english = english[period+1 :]
q=""
for line in file1:
    q += " " + line.strip()

q = q.split()
for i in range(0, len(q)-1, 2):
    sentence = q[i]
    word = q[i+1]
    queries.append((sentence, query))

for s, w in queries:
    print sentences[s-1][w-1]

Я не проверял это, поэтому, пожалуйста, дайте мне знать (желательно с делом, которое сломало его), если он не работает, и я буду искать ошибки

Надеюсь, это поможет

0 голосов
/ 03 марта 2010

Большая проблема в том, что вы должны решить, что отделяет «предложения». Например, является ли '.' концом предложения? Или, может быть, часть аббревиатуры, например, тот, который я только что использовал? -) Во-вторых, и менее сложно, что разделяет слова, например, "TCP / IP" одно слово или два?

Как только вы четко определили эти правила, вы можете легко прочитать файл текста в список «предложений», каждое из которых представляет собой список «слов». Затем вы читаете другой файл как последовательность пар чисел и используете их как индексы в общем списке и в указанном таким образом подсписке. Но проблема предложения и разделения слов - действительно сложная часть.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...