Объединение списка строк по определенному значению индекса в Python - PullRequest
0 голосов
/ 24 октября 2018

У меня есть ряд текстовых файлов с форматированием следующим образом

Transaction Summary
Joe buys from Mindy 5 apples for 6$
Mark buys from Alex 3 apples for 5$
...
END

Где может быть переменное количество транзакций Apple - один текстовый файл может иметь 2 других может иметь 6 - но файлывсе отформатированы одинаково.Я хочу сохранить строки между Сводкой транзакций и Концом.

Сначала я обратился к этому методу , который позволил мне напечатать указанные строки, но я не мог понять, как хранить строки..

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

with open(filename) as f:
    data = f.readlines()
f.close

Таким образом, я мог бы склеить этот список строк.У меня проблема в том, что хотя я знаю, где начать соединение (индекс 1 строки), так как каждый текстовый файл имеет переменное количество транзакций, я не знаю, как выбрать конкретный индекс, который имеет «END»Строка в нем.

Любой вклад будет оценен - ​​спасибо!

Ответы [ 2 ]

0 голосов
/ 25 октября 2018

Вы можете попробовать использовать регулярные выражения.

import re

string = """ 
Transaction Summary
Joe buys from Mindy 5 apples for 6$
Mark buys from Alex 3 apples for 5$
END
"""
print(re.findall(r"(\w+) buys from (\w+) (\d+) apples for (\d+)",string))
# [('Joe', 'Mindy', '5', '6'), ('Mark', 'Alex', '3', '5')]
0 голосов
/ 24 октября 2018

data.txt

Transaction Summary
Joe buys from Mindy 5 apples for 6$
Mark buys from Alex 3 apples for 5$
END

код

with open('data.txt') as file:
    lines = file.readlines()

transaction = []
for line in lines[1:-1]:
    tokens = line.split(' ')
    transaction.append((
        tokens[0], 
        tokens[3], 
        int(tokens[4]),
        int(tokens[7].rstrip('$\n')) ))

print(transaction)

результат

[('Joe', 'Mindy', 5, 6), ('Mark', 'Alex', 3, 5)]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...