2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Inhaltsverzeichnis
Methodenparameter der CSV-Bibliothek
In der Datei angegebener Vorgang zum Lesen von Zeilen- oder Spaltendaten
TXT-Datei-Lesezeilen, Lesemethoden
TXT-Datei schreiben, Zeilen schreiben
Lese-/Schreibvereinigung (Daten ändern und einfügen)
Beim Lesen und Schreiben von CSV-Dateien müssen Sie sich normalerweise mit Problemen wie Dateipfad, Öffnungsmodus, Zeichenkodierung usw. befassen. Der Parameter newline='' wird normalerweise beim Lesen und Schreiben von CSV-Dateien verwendet, um sicherzustellen, dass das Lesen und Schreiben der Datei nicht durch das Newline-Zeichen des Windows-Systems beeinträchtigt wird. TXT-Dateien und CSV-Dateien unterstützen die gegenseitige Konvertierung, sodass das Lesen und Schreiben von TXT-Dateien vollständig auf CSV-Dateien anwendbar ist.
Parameter | Standardwert | beschreiben |
Trennzeichen | , | Es bezieht sich auf die Zeichen, die zum Trennen von Werten (oder Feldern) in einer CSV-Datei verwendet werden. |
Initialspace überspringen | FALSCH | Es steuert, wie Leerzeichen nach Trennzeichen interpretiert werden. Wenn True, wird das anfängliche Leerzeichen entfernt. |
Zeilenabschluss | rn | Es bezieht sich auf die Zeichenfolge, die zum Abschluss einer Zeile verwendet wird. |
Zitat | " | Es bezieht sich auf eine einzelne Zeichenfolge, die als Referenz auf den Wert verwendet wird, wenn Sonderzeichen (z. B. Trennzeichen) im Feld vorkommen. „0,0“ enthält beispielsweise „,Im Fall von „können Sie quotechar="“ verwenden, um die Daten in „" als Ganzes zu behandeln. Wenn Sie „0,0“ verwenden, können Sie quotechar="'" verwenden. |
zitieren | csv.QUOTE_NONE | Steuert, wann Zitate vom Autor generiert oder vom Leser erkannt werden (weitere Optionen siehe oben). |
Fluchtzeichen | Keiner | Wenn quoted auf ein Anführungszeichen gesetzt ist, handelt es sich um eine einstellige Zeichenfolge, die als Escapezeichen für das Trennzeichen verwendet wird. |
Anführungszeichen | WAHR | Steuert die Behandlung von Anführungszeichen innerhalb von Feldern.WannWAHR Beim Lesen werden zwei aufeinanderfolgende Anführungszeichen als eins interpretiert, während beim Schreiben jedes in den Daten eingebettete Anführungszeichen als zwei Anführungszeichen geschrieben wird. Standardmäßig ist Doublequote auf True gesetzt. Daher werden zwei aufeinanderfolgende doppelte Anführungszeichen beim Lesen als eins interpretiert. Wenn „doublequote“ auf „False“ gesetzt ist, werden in der Ausgabe aufeinanderfolgende doppelte Anführungszeichen angezeigt. |
- import csv
-
- with open(file_name, 'r', encoding='utf-8-sig') as f:
- reader = csv.reader(f) # 创建csv阅读器对象,读取所有有效数据,返回结果为一个迭代器类对象
- for data in reader: # 遍历每一行的数据
- print(data)
Bei der Codierung kann das Codierungsformat als utf-8-sig angegeben werden, wodurch Stücklistenzeichen automatisch verarbeitet und das Auftreten von ufeff verhindert werden können.
- with open(file_name, 'r', encoding='utf-8-sig') as f:
- reader = csv.reader(f)
- list_csv = list(reader)
- for i in range(len(list_csv)-5,len(list_csv)): # 如读取后5行数据
- print(list_csv[i])
- print(list_csv[i][:3]) # 读取指定列数据
Verwenden Sie die Lesemethoden readlines () und read () von TXT-Dateien. Die gelesenen Daten enthalten Zeilenumbrüche, die verarbeitet werden müssen.Es ist nicht erforderlich, eine CSV-Bibliothek zu importieren
- with open(file_name, 'r', encoding='utf-8-sig') as f:
-
- reader_lines = f.readlines() # 读取所有行放在一个列表中
- for da in reader_lines: # 也可以使用range方法读取指定行的数据,读取结果中有换行符需要处理
- print(da.replace('n',''))
-
- reader = f.read()
- print(reader)
Lesen Sie Daten in Form eines Wörterbuchs, und die gedruckten Daten liegen in Form von Wörterbuch-Schlüssel-Wert-Paaren vor.
- with open(file_name,'r', encoding='utf-8-sig',newline='') as f:
- reader =csv.DictReader(f)
- for r in reader:
- print(r)
Es ist nicht erforderlich, eine CSV-Bibliothek zu importieren
Verwenden Sie write und writelines der TXT-Datei, um Daten zu schreiben. Bei der Verwendung wird das englische Komma im Zeichen als horizontales Tabulatorzeichen und das Zeilenumbruchzeichen als vertikales Tabulatorzeichen für den Zeilenumbruch erkannt. Wenn Sie eine leere Zeile einfügen möchten, verwenden Sie ein Zeilenumbruchzeichen für den Datenparameter. Wenn Sie eine leere Zelle schreiben möchten, verwenden Sie ein Komma für den Datenparameter.
- with open(file_name, 'w', newline='') as f:
- f.write('测试写入数据操作n')
- f.write('n')
- f.writelines(["角色管理,测试测试", "账号管理n", "部门管理n"])
Akzeptieren Sie beim Schreiben von Daten eine Variable, die ein übertragbares Objekt sein kann, z. B. eine Zeichenfolge, eine Liste, ein Tupel, eine Menge, ein Wörterbuch usw. [Bei Zeichenfolgen wird jedes Zeichen separat in Zellen eingefügt, und Wörterbücher werden Schlüssel durchlaufen und schreiben]. Writerow wird zum Schreiben einzelner Datenzeilen und Writerows zum Schreiben mehrerer Datenzeilen verwendet.
- with open(file_name, 'w', newline='') as f:
- ws = csv.writer(f) # 创建一个写入文件对象
- ws.writerow([]) # 列表内容为空,插入的是一个空行
- ws.writerow(["设备实时监控", "设备数据列表", "设备报警分析"]) # 列表数据
- ws.writerow(("角色管理", "账号管理", "部门管理")) # 元组数据
-
- write_data = ['贾史王薛',
- ['贾不假,白玉为堂金作马', '阿房宫,三百里,住不下金陵一个史', '东海缺少白玉床,龙王请来金陵王',
- '丰年好大雪,珍珠如土金如铁'], ('cao', 'xue', 'qin', 'shu'), {'曹', '雪', '芹', '书'},
- {'贾': '宝玉', '史': '湘云', '王': '熙凤', '薛': '宝钗'},
- {'贾': '宝玉', '史': '湘云', '王': '熙凤', '薛': '宝钗'}.values()]
- ws.writerows(write_data) # writerows写入多行数据
Beim Schreiben von Daten muss DictWriter anhand des Wörterbuchschlüssels feststellen, ob der Schlüssel in den Feldnamen enthalten ist. Wenn er nicht vorhanden ist, wird ein Fehler gemeldet. Wenn Sie alle bekannten und unbekannten Wörterbuchdaten hinzufügen müssen, können Sie zunächst alle lesen die Schlüssel der Daten, die geschrieben werden müssen, und vergleichen Sie sie dann mit dem ursprünglichen Dateiheader (lesen Sie den ursprünglichen Dateiheader), fügen Sie ihn zur Headerliste hinzu und schreiben Sie dann die Daten.
- fieldnames = ['姓氏', '人物', '说明'] # 表头
- dictate = [{'姓氏': '贾', '人物': "宝玉"}, {'姓氏': '史', '人物': "湘云"}, {'姓氏': '王', '人物': "熙凤"},
- {'姓氏': '薛', '人物': "宝钗"}]
- with open(file_name, 'w', newline='') as f:
- write = csv.DictWriter(f, fieldnames=fieldnames, delimiter=',')
- write.writeheader() # 写入表头
- write.writerow({'姓氏': '贾', '人物': "宝玉"}) # 单行模式写入
- write.writerows(dictate) # 多行模式写入
Prinzip: Lesen Sie zuerst die ursprünglichen Dateidaten, übertragen Sie sie in den Listenspeicher, verwenden Sie dann die Listenmethode zum Hinzufügen, Löschen und für andere Vorgänge basierend auf der erhaltenen Liste und schreiben Sie schließlich die geänderten Listendaten mithilfe mehrzeiligen Schreibens in die Datei.
- # 第一步:读取数据
- with open(file_name, 'r+', newline='') as f:
- file_csv_data = list(csv.reader(f))
-
- # 第二步:操作数据
- # 插入数据
- file_csv_data.insert(2, '贾史王薛') # 在某行插入一行数据,如在第3行插入数据
- file_csv_data[2].insert(0, '红楼四大家族') # 在指定单元格插入数据,如在3行1列的单元格插入数据
-
- # 修改数据
- file_csv_data[2] = ['贾不假,白玉为堂金作马', '阿房宫,三百里,住不下金陵一个史', '东海缺少白玉床,龙王请来金陵王',
- '丰年好大雪,珍珠如土金如铁', ''] # 修改指定行一行数据
- file_csv_data[2][4] = '葫芦僧判葫芦案' # 修改某一单元格数据,如修改3行5列数据
-
- # 修改符合条件的数据数据
- # 修改符合要求的单元格数据:通过for循环遍历判断,例如修改单元格中包含1的数据,将1替换成一
- # for r_id, row in enumerate(file_csv_data): # 通过行号列号修改
- # for c_id, col in enumerate(row):
- # if '1' in col:
- # file_csv_data[r_id][c_id] = col.replace('1', '一')
-
- for row in file_csv_data: # 通过行数据及列号修改,比上面更方便
- for c_id, col in enumerate(row):
- if '1' in col:
- row[c_id] = col.replace('1', '一')
-
- # 第三步:写入报存数据
- with open(file_name, 'w', newline='') as f:
- write_file = csv.writer(f)
- write_file.writerows(file_csv_data)