web-dev-qa-db-fra.com

Conversion de txt en script csv python

J'ai un fichier .txt avec cela à l'intérieur - 2.9, Gardena CA

Ce que j'essaie de faire est de convertir ce texte en un fichier .csv (table) à l'aide d'un script python: 

import csv
import itertools

with open('log.txt', 'r') as in_file:
    stripped = (line.strip() for line in in_file)
    lines = (line for line in stripped if line)
    grouped = itertools.izip(*[lines] * 3)
    with open('log.csv', 'w') as out_file:
        writer = csv.writer(out_file)
        writer.writerow(('title', 'intro'))
        writer.writerows(grouped)

Le résultat obtenu dans le fichier log.csv est - titre, intro, slogan

Ce que je voudrais que le fichier log.csv montre est:

title,intro
2.9,Gardena CA
3
Adam Eliezerov

Vous devez d'abord diviser la ligne.

import csv

with open('log.txt', 'r') as in_file:
    stripped = (line.strip() for line in in_file)
    lines = (line.split(",") for line in stripped if line)
    with open('log.csv', 'w') as out_file:
        writer = csv.writer(out_file)
        writer.writerow(('title', 'intro'))
        writer.writerows(lines)
10
Tom Yates

Voici comment je le fais:

 with open(txtfile, 'r') as infile, open(csvfile, 'w') as outfile:
        stripped = (line.strip() for line in infile)
        lines = (line.split(",") for line in stripped if line)
        writer = csv.writer(outfile)
        writer.writerows(lines)

J'espère que ça aide!

1
iun1x
import pandas as pd
df = pd.read_fwf('log.txt')
df.to_csv('log.csv')
1
Kit Stark

Je suppose que c'est le résultat dont vous avez besoin:

2.9, Gardena, CA

Cela peut être fait avec ces changements dans votre code:

Extrait de code

import csv
import itertools

with open('log.txt', 'r') as in_file:
    lines = in_file.read().splitlines()
    stripped = [line.replace(","," ").split() for line in lines]
    grouped = itertools.izip(*[stripped]*1)
    with open('log.csv', 'w') as out_file:
        writer = csv.writer(out_file)
        writer.writerow(('title', 'intro', 'tagline'))
        for group in grouped:
            writer.writerows(group)
0
rodmartinez