Оба модуля csv
и pandas
поддерживают непосредственное чтение csv-файлов.Однако, поскольку вам необходимо построчно изменять содержимое файла перед дальнейшей обработкой, я предлагаю читать построчно файл, изменять каждую строку по своему усмотрению и сохранять обработанные данные в списке для дальнейшей обработки.
необходимые шаги включают в себя:
- открытый файл
- чтение файла строка за строкой
- удаление символа новой строки (который является частью строки при использовании
readlines()
- заменить разделитель записей (поскольку запись эквивалентна строке)
- разделить строки в разделителе столбцов
Поскольку .split()
возвращает список строковых элементов, мы получаем общее значениесписок списков, где каждый «подсписок» содержит / представляет данные строки / записи. Данные, отформатированные таким образом, могут быть прочитаны pandas.DataFrame.from_records()
, что очень удобно в данный момент:
import pandas as pd
with open('myData.csv') as file:
# `.strip()` removes newline character from each line
# `.replace('#;#', '')` removes '#;#' from each line
# `.split(';')` splits at given string and returns a list with the string elements
lines = [line.strip().replace('#;#', '').split(';') for line in file.readlines()]
df = pd.DataFrame.from_records(lines, columns=['Name', 'Age', 'Sex'])
print(df)
Примечания:
Я изменил Ç
на ;
, который работал лучше для меня из-за проблем с кодированием. Однако основная идея алгоритма остается прежней.
Reдобавление данных вручную, как это может стать довольно ресурсоемким, что может быть проблемой при обработке больших файлов.Могут быть более элегантные способы, о которых я не знаю.Если возникают проблемы с производительностью, попробуйте прочитать файл порциями или поищите более эффективные реализации.