Как извлечь два столбца из текстового файла в CSV-файл с помощью Python? - PullRequest
0 голосов
/ 07 мая 2018

Я недавно начал читать об обработке файлов, и я хотел сохранить этот набор данных в CSV-файле с двумя столбцами, по одному для каждого X и Y. Я написал для этого следующий код: -

import csv
import itertools

with open('insurance_dataset.txt', 'r') as in_file:
    stripped = (line.strip() for line in in_file)
    lines= (line for line in stripped if line)
    grouped = zip(*[lines] * 1)
    with open('dataset.csv' ,'w') as out_file:
        writer = csv.writer(out_file)
        writer.writerows(grouped)

Приведенный выше код хранит и X, и Y в одной строке. Может кто-нибудь предложить мне модификации моего кода, чтобы я мог поместить строки X и Y в два отдельных столбца? Заранее спасибо!

Ответы [ 4 ]

0 голосов
/ 07 мая 2018

Или, может быть, вам не нужен CSV для работы с набором данных Auto Insurance in Sweden:

import requests

url = 'https://www.math.muni.cz/~kolacek/docs/frvs/M7222/data/AutoInsurSweden.txt'
r = requests.get(url, allow_redirects=True)

open('AutoInsurSweden.txt', 'wb').write(r.content)

with open('AutoInsurSweden.txt') as f:
    lines_after_11 = f.readlines()[11:]


for line in lines_after_11:
    values = line.split("\t")
    print("X:"+values[0] + ", Y:"+ values[1])
0 голосов
/ 07 мая 2018

Это должно помочь.

import csv
data = []
with open('insurance_dataset.txt', 'r') as in_file:
    for line in in_file:
        if line[0].isdigit():
            data.append(line.strip().split())     #--->Split by space

with open('dataset.csv' , 'w') as out_file:
    writer = csv.writer(out_file, delimiter =';')   #--->Semicolon Seperated
    writer.writerow(["X","Y"])     #---->HEADER
    writer.writerows(data)         #---->CONTENT
0 голосов
/ 07 мая 2018

Попробуйте добавить список вне диспетчера контекста, чтобы сохранить строки. Затем отмените отступ второго диспетчера контекста. Должен сделать трюк ...

grouped_list = []

with open('insurance_dataset.txt', 'r') as in_file:
    stripped = (line.strip() for line in in_file)
    lines= (line for line in stripped if line)
    grouped_list.append(zip(*[lines] * 1))
with open('dataset.csv' ,'w') as out_file:
    writer = csv.writer(out_file)
    writer.writerows(grouped)
0 голосов
/ 07 мая 2018

CSV обозначает значения, разделенные запятыми. Поэтому для разделения ячеек все, что вам нужно сделать, это поставить запятую между значениями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...