Ich habe versucht, einen Generator zu erstellen, der mit Python eine C # -Containerklasse aus CSV generiert

Das manuelle Erstellen einer CSV-Containerklasse ist mühsam Erstellen Sie eine C # -Containerklasse, indem Sie den CSV-Typ usw. automatisch analysieren. Ich habe versucht, einen Generator zu erstellen. Bitte beachten Sie, dass es einfache Regeln für das CSV-Format gibt.

Python fängt übrigens gerade erst an zu lernen Möglicherweise stimmt etwas mit dem Code nicht. In diesem Fall wäre es sehr hilfreich, wenn Sie darauf hinweisen könnten.

Original CSV

Ich fühle mich so.

test_csv.csv


id,key1,key2,key3
1,Test 1,1.0,1,
2,Test 2,2.0,2,
3,Test 3,3.0,3,

Die oberste Zeile ist der Name des Schlüssels. Dies ist der Variablenname. Geben Sie danach den Inhalt der CSV-Daten in die zweite Zeile ein.

Ergebnis generieren

CSVContainerTestCsv.cs


using System.Collections;
using System.Collections.Generic;

namespace CSVContainer
{
	//Echte Containerdaten
	public class TestCsv
	{
		public int		 id{ get; private set;}
		public string	 key1{ get; private set;}
		public float	 key2{ get; private set;}
		public int		 key3{ get; private set;}
	}

}

Ich fühle mich so. Da es auf verschiedene Weise praktisch ist, ist es von einem Namespace umgeben.

Der Klassenname ist ein Kamelfall des CSV-Dateinamens. Der CS-Name lautet "CSVContainer" + Klassenname.

Python-Code

CSVContainerGenerator.py


# -*- coding: utf-8 -*-

import glob
import os.path

def convert(file):
	count = 0
	culam = ""
	val = ""

	for line in open(file, 'r'):
		if count == 0:
			culam = line
			count += 1
		else:
			val = line
			break

	out_put(file, culam, val)


def out_put(file, culam, val):
	file_name = os.path.basename(file)
	base_name = file_name.replace(".csv","")
	cs_name = "CSVContainer" + to_camel_case(base_name) + ".cs"
	f = create_file(cs_name, base_name)
	create_class(culam, val, f, to_camel_case(base_name))
	# print file_name


def create_file(file, base_name):
	f = open(file, 'w')
	f.write("using System.Collections;\n")
	f.write("using System.Collections.Generic;\n")
	f.write("\n")
	f.write("namespace CSVContainer\n")
	f.write("{\n")
	f.write("\t//Echte Containerdaten\n")
	f.write("\tpublic class "+to_camel_case(base_name)+"\n")

	return f

def create_class(culam, val, f, base_name):
	f.write("\t{\n")
	culams = culam.split(",")
	vals = val.split(",")
	for i, v in enumerate(culams):
		type_str = ""

		if vals[i].find('.') != -1:
			type_str = "float\t"
		elif vals[i].isdigit():
			type_str = "int\t\t"
		else :
			type_str = "string\t"

		v = v.replace("\n", "")
		v = v.replace("¥n", "")


		f.write("\t\tpublic " + type_str + " " + v + "{ get; private set;}\n")

	f.write("\t}\n")
	f.write("\n")
	f.write("}\n")

def to_camel_case(text):
	text = text.lower()
	text = text.capitalize()

	while '_' in text:
		ix = text.index('_')
		next = text[ix + 1].upper()
		text = text[0:ix] + next + text[ix + 2:]
	return text


for file in glob.glob('CSV/*.csv'):
	print "conv  " , file
	convert(file)

Derzeit gehe ich zur CSV im CSV-Verzeichnis. Das Ausgabeziel befindet sich in derselben Ebene wie der Py-Code. Ich hoffe, Sie können mit diesem Bereich herumspielen. Um ehrlich zu sein, ist es faul, das Verzeichnis zu einem direkten Wert zu machen.

das ist alles

Recommended Posts

Ich habe versucht, einen Generator zu erstellen, der mit Python eine C # -Containerklasse aus CSV generiert
[5.] Ich habe versucht, mit Python ein bestimmtes Authenticator-ähnliches Tool zu erstellen
[2nd] Ich habe versucht, mit Python ein bestimmtes Authenticator-ähnliches Tool zu erstellen
[Python] Ein Memo, das ich versucht habe, mit Asyncio zu beginnen
Ich habe versucht, mit Selenium und Python einen regelmäßigen Ausführungsprozess durchzuführen
Ich habe versucht, mit Python eine 2-Kanal-Post-Benachrichtigungsanwendung zu erstellen
Ich habe versucht, eine ToDo-App mit einer Flasche mit Python zu erstellen
[4.] Ich habe versucht, mit Python ein bestimmtes Authenticator-ähnliches Tool zu erstellen
[1.] Ich habe versucht, mit Python ein bestimmtes Authenticator-ähnliches Tool zu erstellen
[1 Stunde Herausforderung] Ich habe versucht, eine Wahrsagerseite zu erstellen, die für Python zu geeignet ist
Ich möchte ein Spiel mit Python machen
Ich möchte C ++ - Code aus Python-Code erstellen!
Ich habe versucht, mit Raspeye 4 (Python Edition) ein signalähnliches Signal zu erzeugen.
Ich habe versucht, einen periodischen Prozess mit CentOS7, Selenium, Python und Chrome durchzuführen
Ich habe versucht, eine Klasse zu erstellen, mit der Json in Python problemlos serialisiert werden kann
Ich habe versucht, eine CSV-Datei mit Python zu berühren
[Python] Ich habe versucht, eine Shiritori-KI zu erstellen, die den Wortschatz durch Schlachten verbessert
Ich habe versucht, mit Python Machine Learning ein Echtzeit-Modell zur Trennung von Tonquellen zu erstellen
[Mac] Ich möchte einen einfachen HTTP-Server erstellen, auf dem CGI mit Python ausgeführt wird
mong - Ich habe versucht, den Code, der zufällig den Containernamen von Docker generiert, nach Python zu portieren. -
Ich habe versucht, mit Python faker verschiedene "Dummy-Daten" zu erstellen
Ich habe versucht, mit Hy ・ Define a class zu beginnen
Ich habe eine Stoppuhr mit tkinter mit Python gemacht
Ich habe versucht, die Benutzeroberfläche neben Python und Tkinter dreiäugig zu gestalten
Ich habe eine Funktion zum Abrufen von Daten aus der Datenbank spaltenweise mithilfe von SQL mit SQLite3 von Python [SQLite3, SQL, Pandas] erstellt.
[Python] Ich habe versucht, mit tkinter eine Anwendung zu erstellen, die das Gehalt anhand der Arbeitszeit berechnet
Ich habe einen Server mit Python-Socket und SSL erstellt und versucht, über den Browser darauf zuzugreifen
Ich habe auch versucht, die Funktionsmonade und die Zustandsmonade mit dem Generator in Python nachzuahmen
Ich möchte einen Platzhalter verwenden, den ich mit Python entfernen möchte
Ich habe versucht, ein System zu erstellen, das nur gelöschte Tweets abruft
Rubyist hat versucht, eine einfache API mit Python + Flasche + MySQL zu erstellen
Ich habe versucht, mit Python einen regulären Ausdruck für "Betrag" zu erstellen
[Python] Ich habe versucht, eine stabile Sortierung zu implementieren
Ich habe versucht, mit Python eine Liste von Primzahlen zu erstellen
Ich habe versucht, mit Python einen regulären Ausdruck von "Datum" zu erstellen
[Einführung] Ich möchte mit Python einen Mastodon-Bot erstellen! 【Anfänger】
Übergeben Sie die Liste von Python an C ++ als Referenz in pybind11
Ich habe versucht, Jojo mit LSTM ein seltsames Zitat zu machen
Ich habe versucht, mit Python + OpenCV eine Bildähnlichkeitsfunktion zu erstellen
Ich habe versucht, mit Go einen exklusiven Kontrollmechanismus zu erstellen
[Python] Wie man eine Klasse iterierbar macht
Ich habe eine funktionale Sprache mit Python ausprobiert
Ich habe eine Web-API erstellt
Ich habe einen verstümmelten Generator erstellt, der Ihre Lieblingssätze von UTF-8 bis Shift-JIS (cp932) in Python codiert
[Python] Ich habe versucht, mit argparse ein einfaches Programm zu erstellen, das in der Befehlszeile funktioniert
Eine Geschichte, die nicht funktioniert hat, als ich versucht habe, mich mit dem Python-Anforderungsmodul anzumelden
Ich habe versucht, eine Originalsprache "PPAP Script" zu erstellen, die PPAP (Pen Pineapple Appo Pen) mit Python abbildet
Ich habe versucht, mit einem Remote-Server über Socket-Kommunikation mit Python zu kommunizieren.
Ich habe versucht, eine Blockchain zu implementieren, die tatsächlich mit ungefähr 170 Zeilen funktioniert
Ich habe versucht, ein Programm zu erstellen, das Hexadezimalzahlen mit Python in Dezimalzahlen konvertiert
Ich habe mir eine Möglichkeit ausgedacht, aus einem Foto ein 3D-Modell zu erstellen.
Ich habe versucht, "Sakurai-san" LINE BOT mit API Gateway + Lambda zu erstellen
Ich habe versucht, einen Formatierer zu entwickeln, der Python-Protokolle in JSON ausgibt
Ich habe versucht, mit django eine E-Mail zum Abschluss der Registrierung von Google Mail zu senden.
[Outlook] Ich habe versucht, mit Python automatisch eine tägliche Berichtsmail zu erstellen