Парсинг txt-файла

356 просмотра
0
0 Комментариев

Всем привет! Есть .txt файл, строки в котором размещены следующим образом (text — везде разный, a и b одинаковые для каждой строки):

a "text"
b "text"
a "text"
b "text"
...

Необходимо текст превратить в пары вида:

a "text" - b "text"
a "text" - b "text"

Буду рад любому совету: каким образом это сделать, в каком направлении копать и т.д.


Добавить комментарий

1 Ответы

Python Опубликовано 10.12.2018
0

Ну на вскидку сделал бы так, если я правильно понял вопрос и если надо в файл сохранять:

in_file = "IN.txt"
out_file = "OUT.txt"
data_file = []
 
# Открыли, прочитали, получили список
with open(in_file, 'r') as read_file:
    for line in read_file:
        data_file.append(line.strip('\n'))
 
# Соединили из списка в строку, записали построчно
with open(out_file, 'a') as save_file:
    tmp_string = ''
    for num, line in enumerate(data_file):
        if num % 2 == 0:
            tmp_string = line
            continue
        else:
            result = '%s - %s\n' % (tmp_string, line)
            save_file.write(result)

Но это если строки идут одна за одной по очередности и никогда не меняются. Т.е. всегда:

a "text"
b "text"

Результат будет:

a "text" - b "text"
a "text" - b "text"

Если есть еще и c «text»:

in_file = "IN.txt"
out_file = "OUT.txt"
data_file = []
 
# Открываем и парсим файл
with open(in_file, 'r') as read_file:
    tmp_string = ''
   # Перебираем файл по строкам и сравниваем начальный символы строки
    for line in read_file:
        my_string = line.strip('\n')
        if my_string[0] == "c":
            data_file.append(my_string)
        if my_string[0] == "a":
            tmp_string = my_string
        if my_string[0] == "b":
            tmp_string = '%s - %s' % (tmp_string, my_string)
            data_file.append(tmp_string)
            tmp_string = ''
 
# Сохраняем в новом файле
with open(out_file, 'a') as save_file:
    for line in data_file:
        save_file.write('%s\n' % line)

Из

c "text"
a "text"
b "text"
a "text"
b "text"
c "text"

Получим:

c "text"
a "text" - b "text"
a "text" - b "text"
c "text"

Добавить комментарий
Напишите свой ответ на данный вопрос.
Scroll Up