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()