Конвертировать файл .txt (фид данных) в файл .csv

1

В основном исходные данные не имеют заголовков, а только значения (но у меня есть список заголовков). Разделителем является "|". Теперь я пытаюсь преобразовать txt файл в файл csv, используя. Файл csv содержит заголовки, которые у меня есть, и соответствующие значения.

Например:

txt файл выглядит так:

sadasd | dsdads | adsasd

значение 1 | значение 2 | значение 3 | значение 4 | значение 5 | значение 100 | значение 101 | значение 102 | значение 103 | значение 104 | значение 105 значение 200 | значение 201 | значение 202 | значение 203 | значение 204 | значение 205

sdasd | АДС | dsdad

и после преобразования CSV файла будет выглядеть так:

заголовок 1, заголовок 2, заголовок 3, заголовок 4, заголовок 5,

значение 1, значение 2, значение 3, значение 4, значение 5,

значение 100, значение 101, значение 102, значение 103, значение 104, значение 105

значение 200, значение 201, значение 202, значение 203, значение 204, значение 205

Я только начинаю изучать питон и то, что моя идея:

  • удалить первую и последнюю строку.

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

  • конвертировать в.csv

поэтому он выглядит как {'header 1': [значение 1, значение 100, значение 200], 'header 2': [значение 2, значение 101, значение 201]. а затем преобразовать в.csv.

Это только моя мысль, или у вас самый простой способ, но только с использованием python.

  • 0
    Вы знаете, всегда ли есть ровно 5 значений? Может ли это варьироваться в зависимости от файлов? Вы пытались просмотреть другие сообщения SO, которые удаляют первую и последнюю строку?
Теги:
text-parsing

2 ответа

0

Сшивание с частей в stackoverflow дает следующее решение

import pandas as pd

mycolnames = ['col1','col2','col3','col4','col5']

# Use the sep argument to change your delimiter accordingly
df = pd.read_csv("foo.txt", sep="|")

# Set your column names to the data frame
df.columns = mycolnames

# Write your desired columns to csv
df['col1'].to_csv("bar.csv", sep=",")

кредиты

@atomh33ls - Как читать csv в массив записей в numpy?

@LangeHaare - установить имена столбцов в кадре данных pandas from_dict с ориентацией = 'index'

0

Использование модуля csv

Пример:

import csv
with open(filename, "r") as infile:
    data = []
    for i in infile.readlines()[1:-1]:                   #Strip first and last line. 
        if i.strip():
            data.extend(i.strip().split("|"))
data = [data[i:i+5] for i in range(0, len(data), 5)]     #Split list to sub-list of 5 elements
print(data)


header = ["header 1","header 2", "header 3", "header 4", "header 5"]
with open(outfile, "w") as outfile:                     #Output CSV file
    writer = csv.writer(outfile, delimiter=",")
    writer.writerow(header)                             #Write Header
    writer.writerows(data)                              #Write content.
  • 0
    Привет Ракеш, спасибо за быстрый ответ. Что если в передаче я хочу удалить какой-то столбец значений (скажем, столбцы 3 и 5), как это сделать. и как я могу вывести файл .csv файл.

Ещё вопросы

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