Hey,
@snafu
snafu hat geschrieben:Ich sehe in der Testdatei jedenfalls nur einmal doppelte Anführungsstriche. Normalerweise müsste es ja noch ein Gegenstück geben, um den "Anführungsabschnitt" zu beenden.
Das ist ja mein Problem gewesen. Die Dateien, die ich nutze haben häufig nur ein Anführungszeichen und das zweite fehlt. D.h. (so wie ich es sehe) wird der "Anführungsabschnitt" automatisch beendet und zwar bei C3, also am Ende des Inhalt.
snafu hat geschrieben:Oder aber die gezeigte Testdatei stimmt nicht mit der tatsächlichen Datei überein, was ziemlich wahrscheinlich sein dürfte
Die Beispieldateien, die ich hier zeige sind 1zu1 die mit denen ich derzeit arbeite. Ich nutze diese vereinfachten Beispiele damit ich einfacher printen etc kann und so den Fehler ggf schnell finde. In den Orginaldateien ist das Schema und die Trennung exakt gleich, nur sind es 65 Elemente pro Zeile, 501 Zeilen und teilweise 100.000 Zeichen pro Element. Dadurch wird dann ein print an diversen Stellen ziemlich unsinnig, wenn ich schauen will, welche Werte gerade eine Variable hat und mir dann der Bildschirm mit Zeichen geflutet wird und ich nicht mal weiß wo ich die Werte in der Ursprungsdatei finden kann.
Hier ist dann das vollständige Skript, das dann auch eine Datei ausspuckt:
Ich dachte es wäre unsinnig für die Frage wie man ein Anführungszeichen ersetzt.
Code: Alles auswählen
# -*- coding: utf-8 -*-
#Das Skript schreibt alle Zeilen aus allen Dateien eines Ordner in eine großes Datei und hängt den Datennamen hinten dran (4 Zellen)
import csv, os, sys, re
pfad = 'C:/Skripttesten/papererweiterung/1/' # relevanter Pfad mit Dateien
liste_dateiname = os.listdir(pfad) # Pfad zu den txt/csv Dateien 'Pfad'
csv.field_size_limit(250000)
liste = [] #erstellt eine leeres Array
gesamte_datei = open('C:/Skripttesten/papererweiterung1/test.csv', "wb") #öffne die gesamte Datei
for dateiname in liste_dateiname: # für jedes Element der Variable path
with open(os.path.join(pfad, dateiname), "rb") as f: #öffnet die jeweilige datei
reader = csv.reader(f, delimiter="\t") #liest die zeilen aus, tabstop getrennt
next(reader) #überspringt jeweils die erste zeile
for row in reader: #schleife für jede zeile
#if row[58] <> "": # prüft nur ob 58 nicht leer ist. die darf eigentlich nicht leer sein
# paperIdOhneWos = row[58].replace ("WOS:", "") #entfernt in Spalten 58 das WOS von der Paper-No und schreibt es in die Var. paperIdOhneWos
# row.append(paperIdOhneWos) #hängt paperIdOhneWos hinten als Spalte dran
#print (paperIdOhneWos)
#spalte1 = row[1]
#spalte1= spalte1.replace('\"','x')
row = [cell.replace('\"', 'x') for cell in row]
#print(spalte1,row[1])
liste.append(row) #schreibt die zeilen in die liste
writer = csv.writer(gesamte_datei, delimiter = "\t")#gibt die liste weiter an die gesamte datei
writer.writerows(liste)#gibt die liste weiter an die gesamte datei
print("Ende - Dateien zusammengefuegt", gesamte_datei.name)
@Siruis3
Sirius3 hat geschrieben:Du mußt einfach für alle Spalten replace aufrufen:
Danke.