организация всех слов в текстовом файле в массиве или связанном списке, используя python

1

У меня есть текстовый файл следующего формата.

<InitialNode>-><MergeNode *merge>->("Prepare for election")
->["Equipment, voter lists, ballot styles and/or ballots"]-><ForkNode>
{ ->("Prepare for voting (precinct)")-><ForkNode>
{ ->("Gather in-person vote") // Includes early voting.
->["Ballots and/or ballot images"]->(Collect *c),
"Precinct count"->("Count (precinct count)")
->["Machine totals"]->0..1(*c)
}

Мне нужно разбить текстовый файл и сохранить элементы таким образом, чтобы

array[0]=<InitialNode>
array[1]=->
array[2]=<MergeNode *merge>
array[3]=->
array[4]=("Prepare for election")
array[5]=-> 
array[6]=["Equipment, voter lists, ballot styles and/or ballots"]
array[7]=->

и так далее.

Короче, мне нужно разбить весь текст на основе ->.

Все, что происходит между '->', ',', '}', '}', должно храниться в связанном списке или массиве.

Как я могу это сделать с помощью python?

  • 1
    Это один странный формат там. Вы можете немного обобщить грамматику? Кроме того, может ли разделитель находиться внутри значения?
Теги:
arrays
file
linked-list
split

2 ответа

0

Я бы просто использовал встроенный метод split строк.

>>> with open('txtfile.txt', 'r') as f:
...     txt = f.read()
... 
>>> txt.split('->')
['\n<InitialNode>', '<MergeNode *merge>', '("Prepare for election")\n', 
 '["Equipment, voter lists, ballot styles and/or ballots"]', '<ForkNode>\n{ ', 
 '("Prepare for voting (precinct)")', '<ForkNode>\n{ ', 
 '("Gather in-person vote") // Includes early voting.\n', 
 '["Ballots and/or ballot images"]', '(Collect *c),\n"Precinct count"', 
 '("Count (precinct count)")\n', '["Machine totals"]', '0..1(*c)\n}\n'
]

Но я не уверен, что вы подразумеваете под "Все, что происходит между" → ',', ','} ','} 'должно храниться в связанном списке или массиве. " Это делает это? Или вам нужно разделить эти подстроки дальше?

  • 0
    @rekharajct, я также предполагаю, что вам не нужны строки '->' между каждым элементом; если вы это сделаете, дайте мне знать, и я буду редактировать.
  • 0
    Я попробовал приведенный выше код. То, что я дал, является спецификацией диаграммы деятельности. Я намерен преобразовать спецификацию в формат xml. Каждый элемент в спецификации имеет значение. Например, -> указывает на соединение, запятая указывает на ветвление. и так далее. Так что мне нужно сохранить каждый элемент -,,}, -> и так далее в списке, пройти его и сгенерировать XML.
Показать ещё 2 комментария
0

Если ваша начальная строка хранится в x.

Чтобы получить весь текст в x, сделайте

x = open("/tmp/filename").read()

Это должно сделать трюк

import re
splitter = re.compile('->')
array = splitter.split(x)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню