Разбор файла с разделителями трубы в 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)
Другие вопросы по тегам