Ich bin neu in Python, versuchen, unter Textdatei in CSV-Datei zu konvertieren. Die eingegebene Textdatei hat 2 Spalte Eins ist id und andere ist Name, diese zweite Spalte kann Komma, Zahlen und Leerzeichen enthalten.Problem beim Konvertieren der Textdatei in CSV, wo eine Spalte Leerzeichen und Komma in Textdatei enthält
Eingabedatei:
1134999 06Crazy Life
6821360 Pang Nakarin
10113088 Terfel, Bartoli- Mozart: Don
10151459 The Flaming Sidebur
6826647 Bodenstandig 3000
10186265 Jota Quest e Ivete Sangalo
6828986 Toto_XX (1977
10236364 U.S Bombs -
1135000 artist formaly know as Mat
Ich dachte, das gelöst werden könnte:
Durch doppelte Anführungszeichen setzen die zwei Trennsäule
Erwartetes Ergebnis sein kann:
"1134999","04Crazy Life" "6821360","Pang Nakarin" "10113088","Terfel,Bartoli-Mozart: Don"
von Datei nach dem ersten Raum trennt dann doppelte Anführungszeichen in der zweiten Spalte Anwendung (als ID-Spalte enthält keinen Raum/Komma)
Erwartetes Ergebnis sein könnte.
1134999,"04Crazy Life" 6821360,"Pang Nakarin" 10113088,"Terfel,Bartoli-Mozart: Don"
Ich habe versucht, um die zwei Spalten zu zitieren, indem Sie den folgenden Code verwenden. Aber es doppelt jedes Wort durch Leerzeichen getrennt zitiert, die ich nicht will:
import csv
import itertools
from StringIO import StringIO
quotedData = StringIO()
with open('demo.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('try.csv', 'w') as out_file:
writer = csv.writer(out_file, quotedData, quoting=csv.QUOTE_ALL)
writer.writerow(('artist_id', 'artist_name'))
for group in grouped:
writer.writerows(group)
Ergebnis:
"artist_id","artist_name"
"1134999","06Crazy","Life"
"6821360","Pang","Nakarin"
"10113088","Terfel","Bartoli-","Mozart:","Don"
"10151459","The","Flaming","Sidebur"
"6826647","Bodenstandig","3000"
"10186265","Jota","Quest","e","Ivete","Sangalo"
"6828986","Toto_XX","(1977"
"10236364","U.S","Bombs","-"
"1135000","artist","formaly","know","as","Mat"
"10299728","Kassierer","-","Musik","für","beide","Ohren"