Мне нужно отредактировать текстовый файл с непостоянной структурой. Попытка использовать панд, это лучший инструмент для работы?

1

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

Текстовый файл, который у меня есть, выглядит примерно так:

title1
title2
...
title5
var1 var2 var3 var4 var5
var1.1 var2.1 var3.1 var4.1 var5.1

Так далее и тому подобное. Заголовки могут быть от 5 до 18, а количество титров = количество столбцов для строк с переменными.

Переменные строки могут попасть в сотни тысяч.

Мне нужно в основном добавить один заголовок (константу), а затем на каждую строку, мне нужно добавить дополнительный столбец, который зависит от числа где-то в var1 (строка) этой строки.

Является ли панда правильной вещью для использования здесь? В настоящее время, когда я просто импортирую его с помощью read_table, мне не нравится добавление информации о разделителе, которую я предполагаю, потому что исходные строки - это всего лишь одна вещь.

Все советы будут высоко оценены.

Большое спасибо

  • 2
    Если текстовый файл не слишком большой, я бы настоятельно рекомендовал просто использовать чистый Python. Вместо изучения двух вещей вы можете просто изучить одну. За исключением этого, сначала очистите файл, чтобы он был в хорошем формате, а затем используйте pandas, если это необходимо. Я хотел бы отметить, что очень трудно делать такие вещи, если файл на самом деле не согласован (случайный).
Теги:
pandas

1 ответ

1

Вы можете сделать это с чистым Python. В этом примере я сначала разбираю строку (можно читать из файла) в структуры Python, делаю желаемую операцию (добавляю один заголовок, добавляем столбец в строку на основе первого элемента в этой строке) и записываем значения обратно:

data = """
title1
title2
title3
title4
title5
var1 var2 var3 var4 var5
var1.1 var2.1 var3.1 var4.1 var5.1
"""

import re


# parse string to Python structures:
titles = re.findall(r'^(\w+)$', data, flags=re.M)
rows = []
for row in re.finditer(r'^.*? .*?$', data, flags=re.M):
    rows.append([])
    for values in re.finditer(r'[\w\.]+', row[0]):
        rows[-1].append(values[0])

# add title:
titles.append('NEWTITLE')

# add value to all rows (some example operation with column 0):
for row in rows:
    row.append('NEW' + row[0])

# print values back to old form:
for title in titles:
    print(title)
for row in rows:
    print(' '.join(row))

Выходы:

title1
title2
title3
title4
title5
NEWTITLE
var1 var2 var3 var4 var5 NEWvar1
var1.1 var2.1 var3.1 var4.1 var5.1 NEWvar1.1
  • 0
    Спасибо, Проблемы с распознаванием строк как строк. Возможно, я неправильно импортирую файл. В настоящее время я запускаю его как data = open (TextFileEditing, "w"). Если я попробую режим чтения и добавления, он тоже не сработает.
  • 0
    @ Jt246 вы открываете, открываете файл с помощью f = open('my_data.txt', 'r') и читаете его с помощью f.read()
Показать ещё 1 комментарий

Ещё вопросы

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