У меня есть текстовый файл следующего формата.
<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?
Я бы просто использовал встроенный метод 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'
]
Но я не уверен, что вы подразумеваете под "Все, что происходит между" → ',', ','} ','} 'должно храниться в связанном списке или массиве. " Это делает это? Или вам нужно разделить эти подстроки дальше?
'->'
между каждым элементом; если вы это сделаете, дайте мне знать, и я буду редактировать.
Если ваша начальная строка хранится в x.
Чтобы получить весь текст в x, сделайте
x = open("/tmp/filename").read()
Это должно сделать трюк
import re
splitter = re.compile('->')
array = splitter.split(x)