Разбор файла с разделителями трубы в python
Я пытаюсь разобрать файл с разделителями канала и передать значения в список, чтобы позже я мог распечатать выборочные значения из списка.
Файл выглядит так:
name|age|address|phone|||||||||||..etc
Имеет более 100 столбцов.
4 ответа
Решение
Если вы анализируете очень простой файл, который не будет содержать |
символы в фактических значениях поля, вы можете использовать split
:
fileHandle = open('file', 'r')
for line in fileHandle:
fields = line.split('|')
print(fields[0]) # prints the first fields value
print(fields[1]) # prints the second fields value
fileHandle.close()
Используйте библиотеку CSV.
Сначала зарегистрируйте свой диалект:
import csv
csv.register_dialect('piper', delimiter='|', quoting=csv.QUOTE_NONE)
Затем используйте свой диалект в файле:
with open(myfile, "rb") as csvfile:
for row in csv.DictReader(csvfile, dialect='piper'):
print row['name']
import pandas as pd
pd.read_csv(filename,sep="|")
Это сохранит файл в датафрейме. Для каждого столбца вы можете применить условия, чтобы выбрать необходимые значения для печати. Выполнение занимает очень короткое время. Я пробовал с 111047 строк.
В 2022 году с Python 3.8 или выше вы можете просто сделать:
with open(file_path, "r") as csvfile:
reader = csv.reader(csvfile, delimiter='|')
for row in reader:
print(row)