CSV with; Python

0

I have a problem with a CSV that is separated by ; and not by , as usual. I made my code a while ago and it works with CSV separated by , , and I want to convert it (the code) to values separated by ; or else convert my CSV separated by ; to CSV separated by ,

code:

# coding=utf-8
# encoding=utf8
"""..."""
import sys
from Tkinter import*
import Tkinter as tk
import csv
import pandas as pd
import os


reload(sys)
sys.setdefaultencoding('utf8')

b = "Working.csv"
"""Nueva Ventana."""
ventana = Tk()

"""Dimenciones de la ventana."""
ventana.geometry("1100x900+0+0")

"""Titulo."""
ventana.title("CSV TOOLS")


"""Texto."""
lblUsuario = Label(text="Bienvenidos a CSV Tools", font=("Agency FB", 22)).place(x=10, y=10)


"""Cargar CSV."""
lblUsuario = Label(text="Cargar CSV", font=("Agency FB", 14)).place(x=10, y=100)

"""Campo de texto."""
entradaU = StringVar()
txtUsuario = Entry(ventana, textvariable=entradaU).place(x=10, y=150)

"""Boton."""

def aceptar():
    """."""
    global a
    a = entradaU.get()
    if a == "exit":
        raise SystemExit
    else:
        pass
    try:
        with open(a, 'rb') as f:
            reader = csv.reader(f)
            global lista2
            lista2 = list(reader)
            lstmaterias = Label(ventana, text="Cabeceras:                                  ").place(x=10, y=180)
            lstmaterias = Listbox(ventana, width=100, height=10)
            global lista22
            lista22 = ' '.join(str(e) for e in lista2[0])
            lstmaterias.insert(0, lista22)
            lstmaterias.place(x=10, y=200)
            global entrada2
            entrada2 = StringVar()
            lstmaterias222 = Label(ventana, text="Filtro").place(x=10, y=400)
            global txtusuarijjo
            txtusuarijjo = Entry(ventana, textvariable=entrada2).place(x=10, y=420)
            filtro = Button(ventana, text="   Aceptar   ", command=orden, font=("Agency FB", 10)).place(x=210, y=420)

    except IOError:
        lstmaterias = Label(ventana, text="Error:").place(x=10, y=180)
        lstmaterias = Label(ventana, text="Archivo No Encontrado").place(x=40, y=180)
    with open(a, 'rb') as f:
        reader = csv.reader(f)
        row_count = sum(1 for row in reader)
        row_count = row_count - 1
        row_count_text = Label(ventana, text="Numero de Filas:").place(x=300, y=148)
        row_count_text = Label(ventana, text=row_count).place(x=400, y=148)

aceptar = Button(ventana, text="   Aceptar   ", command=aceptar, font=("Agency FB", 10)).place(x=210, y=148)


def orden():
    """."""
    global a_orden
    a_orden = entrada2.get()
    if a_orden == "exit":
        raise SystemExit
    if len(entrada2.get()) == 0:
        return a_orden
    if a_orden not in lista22:
        a_orden

    else:
        if a_orden in lista22:
            global entrada3
            entrada3 = StringVar()
            lstmaterias = Label(ventana, text="Ascendente:").place(x=350, y=400)
            lstmaterias = Label(ventana, text="(True - Flase)").place(x=350, y=450)
            txtusuario = Entry(ventana, textvariable=entrada3).place(x=350, y=420)
            global f
            f = entrada3.get()
            true_false = Button(ventana, text="   Aceptar   ", command=valores, font=("Agency FB", 10)).place(x=550, y=420)
            global entrada4
            entrada4 = StringVar()
            lstmaterias = Label(ventana, text="Cantidad de datos:").place(x=700, y=400)
            txtusuario = Entry(ventana, textvariable=entrada4).place(x=700, y=420)
            true_false = Button(ventana, text="   Aceptar   ", command=top, font=("Agency FB", 10)).place(x=900, y=420)


def top():
    """."""
    nn = entrada4.get()
    nn = int(nn)
    movies = pd.read_csv(b, nrows=nn)
    movies = movies.to_csv(b, index=False)


def valores():
    """."""
    mayor_menor = "True", "False"
    if len(entrada3.get()) == 0:
        return valores
    else:
        if entrada3.get() not in mayor_menor:
            return valores
        else:
            pass
    movies = pd.read_csv(a, error_bad_lines=False, delimiter=',', encoding="utf-8-sig", low_memory=False)
    movies = movies.sort_values(a_orden, ascending=f)
    movies = movies.to_csv(b, index=False)
    global entrada5
    entrada5 = StringVar()
    lstmaterias = Label(ventana, text="Nombre del Archivo Nuevo:").place(x=10, y=500)
    txtusuario = Entry(ventana, textvariable=entrada5).place(x=10, y=520)
    true_false = Button(ventana, text="   Aceptar   ", command=new_csv, font=("Agency FB", 10)).place(x=210, y=520)

    global entrada6
    entrada6 = StringVar()
    lstmaterias2 = Label(ventana, text="Introduzca las Cabeceras:").place(x=350, y=500)
    txtusuario2 = Entry(ventana, textvariable=entrada6).place(x=350, y=520)
    true_false2 = Button(ventana, text="   Aceptar   ", command=cabex, font=("Agency FB", 10)).place(x=550, y=520)


def new_csv():
    """."""
    global a_valor
    a_valor = entrada5.get()
    if a_valor == "exit":
        raise SystemExit


def cabex():
    """."""
    global a_cabex
    a_cabex = entrada6.get()
    a_cabex = a_cabex.split()
    with open(b, 'r') as csvfile, open(a_valor, "wb") as output:
        reader = csv.DictReader(csvfile)
        writer = csv.DictWriter(output, fieldnames=a_cabex, extrasaction='ignore')
        writer.writeheader()
        for row in reader:
            a = 'fillRate'
            if a in lista2[0]:
                row['fillRate'] = '{:.2f}'.format(float(row['fillRate']) * 100)
            writer.writerow(row)
    os.remove(b)

    lstmsss = Label(ventana, text="Reporte Creado", font=("Agency FB", 30)).place(x=350, y=600)

ventana.mainloop()

input()
    
asked by Martin Bouhier 20.12.2017 в 17:06
source

0 answers