Чтение предварительно отформатированного текстового файла в виде массиваPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Чтение предварительно отформатированного текстового файла в виде массива

Сообщение Anonymous »

Я пытаюсь решить головоломку о геокэшинге. Задача состоит в том, чтобы найти определенные слова в определенных строках определенных сонетов Шекспира. Для этого мне нужно разбить все сонеты Шекспира на трехмерный массив сначала по сонетам, затем внутри него по строкам, затем по словам и убрать знаки препинания, чтобы затем найти, например, 3-е слово 5-я строка 2-го сонета, просто используя print(sonnets[1][4][2]).
Мой файл sonnets.txt выглядит так (только сонетов 154 вместо двух):

Код: Выделить всё

I.

FROM fairest creatures we desire increase,
That thereby beauty's rose might never die,
But as the riper should by time decease,
His tender heir might bear his memory:
But thou, contracted to thine own bright eyes,
Feed'st thy light'st flame with self-substantial fuel,
Making a famine where abundance lies,
Thyself thy foe, to thy sweet self too cruel.
Thou that art now the world's fresh ornament
And only herald to the gaudy spring,
Within thine own bud buriest thy content
And, tender churl, makest waste in laggarding.
Pity the world, or else this glutton be,
To eat the world's due, by the grave and thee.

II.

When forty winters shall beseige thy brow,
And dig deep trenches in thy beauty's field,
Thy youth's proud livery, so gazed on now,
Will be a tatter'd weed, of small worth held:
Then being ask'd where all thy beauty lies,
Where all the treasure of thy lusty days,
To say, within thine own deep-sunken eyes,
Were an all-eating shame and thriftless praise.
How much more praise deserved thy beauty's use,
If thou couldst answer 'This fair child of mine
Shall sum my count and make my old excuse,'
Proving his beauty by succession thine!
This were to be new made when thou art old,
And see thy blood warm when thou feel'st it cold.
Нумерацию сонетов (I, II и т. д.), конечно, тоже нужно удалить, хотя я мог бы сделать это вручную.
Чтобы убрать пунктуацию Я сделал это, кажется, работает:

Код: Выделить всё

import string

s = open("sonnets.txt").read()
exclude = set(string.punctuation)
s = ''.join(ch for ch in s if ch not in exclude)
Однако здесь я совершенно застрял! Я не знаю, как разделить его на три раза, и я не знаю, как разделить его на сонеты, поскольку и строки, и сонеты разделены разрывами строк, а сонеты просто разделены большим количеством разрывов.

Подробнее здесь: https://stackoverflow.com/questions/793 ... s-an-array
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»