-
-
Notifications
You must be signed in to change notification settings - Fork 214
/
Copy pathcsv.po
1028 lines (911 loc) · 44.6 KB
/
csv.po
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
# Copyright (C) 2001-2024, Python Software Foundation
# This file is distributed under the same license as the Python package.
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: Python 3.13\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-09-03 11:11+0800\n"
"PO-Revision-Date: 2023-11-08 15:06+0800\n"
"Last-Translator: RockLeon <therockleona@gmail.com>\n"
"Language-Team: Chinese - TAIWAN (https://github.com/python/python-docs-zh-"
"tw)\n"
"Language: zh_TW\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Poedit 3.4\n"
#: ../../library/csv.rst:2
msgid ":mod:`!csv` --- CSV File Reading and Writing"
msgstr ":mod:`!csv` --- CSV 檔案讀取及寫入"
#: ../../library/csv.rst:9
msgid "**Source code:** :source:`Lib/csv.py`"
msgstr "**原始碼:**\\ :source:`Lib/csv.py`"
#: ../../library/csv.rst:17
msgid ""
"The so-called CSV (Comma Separated Values) format is the most common import "
"and export format for spreadsheets and databases. CSV format was used for "
"many years prior to attempts to describe the format in a standardized way "
"in :rfc:`4180`. The lack of a well-defined standard means that subtle "
"differences often exist in the data produced and consumed by different "
"applications. These differences can make it annoying to process CSV files "
"from multiple sources. Still, while the delimiters and quoting characters "
"vary, the overall format is similar enough that it is possible to write a "
"single module which can efficiently manipulate such data, hiding the details "
"of reading and writing the data from the programmer."
msgstr ""
"所謂的 CSV (Comma Separated Values) 檔案格式是試算表及資料庫中最常見的匯入、"
"匯出檔案格式。在嘗試以 :rfc:`4180` 中的標準化方式來描述格式之前,CSV 格式已經"
"使用了許多年。由於缺少一個完善定義的標準,意味著各個不同的應用程式會在資料產"
"生及銷毀時有微妙的差別。這些不同之處使得從不同資料來源處理 CSV 檔案時會非常擾"
"人。儘管如此,雖然分隔符號和引號字元有所不同,整體的格式非常相似,可以寫個單"
"一模組來高效率的操作這樣的資料,讓程式設計師可以隱藏讀取及寫入資料的細節。"
#: ../../library/csv.rst:28
msgid ""
"The :mod:`csv` module implements classes to read and write tabular data in "
"CSV format. It allows programmers to say, \"write this data in the format "
"preferred by Excel,\" or \"read data from this file which was generated by "
"Excel,\" without knowing the precise details of the CSV format used by "
"Excel. Programmers can also describe the CSV formats understood by other "
"applications or define their own special-purpose CSV formats."
msgstr ""
":mod:`csv` 模組實作透過 class 去讀取、寫入 CSV 格式的表格資料。它讓程式設計師"
"可以說出:「以 Excel 為首選並寫入該種格式的資料」或是「從 Excel 產生的檔案來"
"讀取資料」,且無需知道這是 Excel 所使用的 CSV 格式等精確的細節。程式設計師也"
"可以描述其他應用程式所理解的 CSV 格式或他們自行定義具有特殊意義的 CSV 格式。"
#: ../../library/csv.rst:35
msgid ""
"The :mod:`csv` module's :class:`reader` and :class:`writer` objects read and "
"write sequences. Programmers can also read and write data in dictionary "
"form using the :class:`DictReader` and :class:`DictWriter` classes."
msgstr ""
":mod:`csv` 模組的 :class:`reader` 及 :class:`writer` 物件可以讀取及寫入序列。"
"程式設計師也可以透過 :class:`DictReader` 及 :class:`DictWriter` class(類別)"
"使用 dictionary (字典)讀取及寫入資料。"
#: ../../library/csv.rst:41
msgid ":pep:`305` - CSV File API"
msgstr ":pep:`305` - CSV 檔案 API"
#: ../../library/csv.rst:42
msgid "The Python Enhancement Proposal which proposed this addition to Python."
msgstr "Python Enhancement Proposal (PEP) 所提出的 Python 附加功能。"
#: ../../library/csv.rst:48
msgid "Module Contents"
msgstr "模組內容"
#: ../../library/csv.rst:50
msgid "The :mod:`csv` module defines the following functions:"
msgstr ":mod:`csv` 模組定義了以下函式:"
#: ../../library/csv.rst:58
msgid ""
"Return a :ref:`reader object <reader-objects>` that will process lines from "
"the given *csvfile*. A csvfile must be an iterable of strings, each in the "
"reader's defined csv format. A csvfile is most commonly a file-like object "
"or list. If *csvfile* is a file object, it should be opened with "
"``newline=''``. [1]_ An optional *dialect* parameter can be given which is "
"used to define a set of parameters specific to a particular CSV dialect. It "
"may be an instance of a subclass of the :class:`Dialect` class or one of the "
"strings returned by the :func:`list_dialects` function. The other optional "
"*fmtparams* keyword arguments can be given to override individual formatting "
"parameters in the current dialect. For full details about the dialect and "
"formatting parameters, see section :ref:`csv-fmt-params`."
msgstr ""
"回傳一個\\ :ref:`讀取器物件 (reader object) <reader-objects>` 並處理在指定的 "
"*csvfile* 中的每一行,csvfile 必須是字串的可疊代物件 (iterable of strings),"
"其中每個字串都要是讀取器所定義的 csv 格式,csvfile 通常是個類檔案物件或者 "
"list。如果 *csvfile* 是個檔案物件,則需開啟時使用 ``newline=''``。 [1]_ "
"*dialect* 為一個可選填的參數,可以用為特定的 CSV dialect(方言) 定義一組參"
"數。它可能為 :class:`Dialect` 的一個子類別 (subclass) 的實例或是由 :func:"
"`list_dialects` 函式回傳的多個字串中的其中之一。另一個可選填的關鍵字引數 "
"*fmtparams* 可以在這個 dialect 中覆寫 (override) 個別的格式化參數 "
"(formatting parameter)。關於 dialect 及格式化參數的完整說明,請見段落 :ref:"
"`csv-fmt-params`。"
#: ../../library/csv.rst:72
msgid ""
"Each row read from the csv file is returned as a list of strings. No "
"automatic data type conversion is performed unless the ``QUOTE_NONNUMERIC`` "
"format option is specified (in which case unquoted fields are transformed "
"into floats)."
msgstr ""
"從 CSV 檔案讀取的每一列會回傳為一個字串列表。除非格式選項 "
"``QUOTE_NONNUMERIC`` 有被指定(在這個情況之下,沒有引號的欄位都會被轉換成浮點"
"數),否則不會進行自動資料型別轉換。"
#: ../../library/csv.rst:76 ../../library/csv.rst:106 ../../library/csv.rst:181
#: ../../library/csv.rst:219
msgid "A short usage example::"
msgstr "一個簡短的用法範例: ::"
#: ../../library/csv.rst:78
msgid ""
">>> import csv\n"
">>> with open('eggs.csv', newline='') as csvfile:\n"
"... spamreader = csv.reader(csvfile, delimiter=' ', quotechar='|')\n"
"... for row in spamreader:\n"
"... print(', '.join(row))\n"
"Spam, Spam, Spam, Spam, Spam, Baked Beans\n"
"Spam, Lovely Spam, Wonderful Spam"
msgstr ""
">>> import csv\n"
">>> with open('eggs.csv', newline='') as csvfile:\n"
"... spamreader = csv.reader(csvfile, delimiter=' ', quotechar='|')\n"
"... for row in spamreader:\n"
"... print(', '.join(row))\n"
"Spam, Spam, Spam, Spam, Spam, Baked Beans\n"
"Spam, Lovely Spam, Wonderful Spam"
#: ../../library/csv.rst:89
msgid ""
"Return a writer object responsible for converting the user's data into "
"delimited strings on the given file-like object. *csvfile* can be any "
"object with a :meth:`~io.TextIOBase.write` method. If *csvfile* is a file "
"object, it should be opened with ``newline=''`` [1]_. An optional *dialect* "
"parameter can be given which is used to define a set of parameters specific "
"to a particular CSV dialect. It may be an instance of a subclass of the :"
"class:`Dialect` class or one of the strings returned by the :func:"
"`list_dialects` function. The other optional *fmtparams* keyword arguments "
"can be given to override individual formatting parameters in the current "
"dialect. For full details about dialects and formatting parameters, see "
"the :ref:`csv-fmt-params` section. To make it as easy as possible to "
"interface with modules which implement the DB API, the value :const:`None` "
"is written as the empty string. While this isn't a reversible "
"transformation, it makes it easier to dump SQL NULL data values to CSV files "
"without preprocessing the data returned from a ``cursor.fetch*`` call. All "
"other non-string data are stringified with :func:`str` before being written."
msgstr ""
"回傳一個寫入器物件 (writer object),其負責在給定的類檔案物件 (file-like "
"object) 上將使用者的資料轉換為分隔字串 (delimited string)。*csvfile* 可以為具"
"有 :meth:`~io.TextIOBase.write` method 的任何物件。若 *csvfile* 為一個檔案物"
"件,它應該使用 ``newline=''`` 開啟 [1]_ 。*dialect* 為一個可選填的參數,可以"
"用為特定的 CSV dialect 定義一組參數。它可能為 :class:`Dialect` 的一個子類別的"
"實例或是由 :func:`list_dialects` 函式回傳的多個字串中的其中之一。另一個可選填"
"的關鍵字引數 *fmtparams* 可以在這個 dialect 中覆寫個別的格式化參數。關於 "
"dialect 及格式化參數的完整說明,請見段落 :ref:`csv-fmt-params`。為了更容易與"
"有實作 DB API 的模組互相接合,:const:`None` 值會被寫成空字串。雖然這不是一個"
"可逆的變換,這使得dump (傾印) SQL NULL 資料值到 CSV 檔案上就無需讓 "
"``cursor.fetch*`` 呼叫回傳的資料進行預處理 (preprocessing)。其餘非字串的資料"
"則會在寫入之前用 :func:`str` 函式進行字串化 (stringify)。"
#: ../../library/csv.rst:108
msgid ""
"import csv\n"
"with open('eggs.csv', 'w', newline='') as csvfile:\n"
" spamwriter = csv.writer(csvfile, delimiter=' ',\n"
" quotechar='|', quoting=csv.QUOTE_MINIMAL)\n"
" spamwriter.writerow(['Spam'] * 5 + ['Baked Beans'])\n"
" spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])"
msgstr ""
"import csv\n"
"with open('eggs.csv', 'w', newline='') as csvfile:\n"
" spamwriter = csv.writer(csvfile, delimiter=' ',\n"
" quotechar='|', quoting=csv.QUOTE_MINIMAL)\n"
" spamwriter.writerow(['Spam'] * 5 + ['Baked Beans'])\n"
" spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])"
#: ../../library/csv.rst:118
msgid ""
"Associate *dialect* with *name*. *name* must be a string. The dialect can "
"be specified either by passing a sub-class of :class:`Dialect`, or by "
"*fmtparams* keyword arguments, or both, with keyword arguments overriding "
"parameters of the dialect. For full details about dialects and formatting "
"parameters, see section :ref:`csv-fmt-params`."
msgstr ""
"將 *dialect* 與 *name* 進行關聯 (associate)。*name* 必須為字串。這個 dialect "
"可以透過傳遞 :class:`Dialect` 的子類別進行指定;或是關鍵字引數 *fmtparams*;"
"或是以上兩者皆是,並透過關鍵字引數來覆寫 dialect 的參數。關於 dialect 及格式"
"化參數的完整說明,請見段落 :ref:`csv-fmt-params`。"
#: ../../library/csv.rst:127
msgid ""
"Delete the dialect associated with *name* from the dialect registry. An :"
"exc:`Error` is raised if *name* is not a registered dialect name."
msgstr ""
"從 dialect 註冊表 (registry) 中,刪除與 *name* 關聯的 dialect。若 *name* 如果"
"不是註冊的 dialect 名稱,則會產生一個 :exc:`Error`。"
#: ../../library/csv.rst:133
msgid ""
"Return the dialect associated with *name*. An :exc:`Error` is raised if "
"*name* is not a registered dialect name. This function returns an "
"immutable :class:`Dialect`."
msgstr ""
"回傳一個與 *name* 關聯的 dialect。若 *name* 如果不是註冊的 dialect 名稱,則會"
"產生一個 :exc:`Error`。這個函式會回傳一個 immutable (不可變物件) :class:"
"`Dialect`。"
#: ../../library/csv.rst:139
msgid "Return the names of all registered dialects."
msgstr "回傳所有已註冊的 dialect 名稱。"
#: ../../library/csv.rst:144
msgid ""
"Returns the current maximum field size allowed by the parser. If *new_limit* "
"is given, this becomes the new limit."
msgstr ""
"回傳目前的剖析器 (parser) 允許的最大字串大小。如果 *new_limit* 被給定,則會變"
"成新的最大字串大小。"
#: ../../library/csv.rst:148
msgid "The :mod:`csv` module defines the following classes:"
msgstr ":mod:`csv` 模組定義了下列的類別:"
#: ../../library/csv.rst:153
msgid ""
"Create an object that operates like a regular reader but maps the "
"information in each row to a :class:`dict` whose keys are given by the "
"optional *fieldnames* parameter."
msgstr ""
"建立一個物件,其運作上就像一般的讀取器,但可以將每一列資訊 map (對映) 到 :"
"class:`dict` 中,可以透過選填的參數 *fieldnames* 設定 key。"
#: ../../library/csv.rst:157
msgid ""
"The *fieldnames* parameter is a :term:`sequence`. If *fieldnames* is "
"omitted, the values in the first row of file *f* will be used as the "
"fieldnames and will be omitted from the results. If *fieldnames* is "
"provided, they will be used and the first row will be included in the "
"results. Regardless of how the fieldnames are determined, the dictionary "
"preserves their original ordering."
msgstr ""
"參數 *fieldnames* 是一個 :term:`sequence`。如果 *fieldnames* 被省略了,檔案 "
"*f* 中第一列的值會被當作欄位標題,且於結果中會被省略。如果 *fieldname* 有提"
"供,它們就會被使用,且第一列會被包含在結果中。不管欄位標題是如何決定的,"
"dictionary 都會保留原始的排序。"
#: ../../library/csv.rst:164
msgid ""
"If a row has more fields than fieldnames, the remaining data is put in a "
"list and stored with the fieldname specified by *restkey* (which defaults to "
"``None``). If a non-blank row has fewer fields than fieldnames, the missing "
"values are filled-in with the value of *restval* (which defaults to "
"``None``)."
msgstr ""
"如果一列資料中的欄位比欄位標題還多,其餘的資料及以 *restkey* (預設為 "
"``None``)特指的欄位標題會放入列表當中並儲存。如果一個非空的 (non-blank) 列中"
"的欄位比欄位標題還少,缺少的值則會填入 *restval* (預設為 ``None``)的值。"
#: ../../library/csv.rst:170
msgid ""
"All other optional or keyword arguments are passed to the underlying :class:"
"`reader` instance."
msgstr "所有其他選填的引數或關鍵字引數皆會傳遞至下層的 :class:`reader` 實例。"
#: ../../library/csv.rst:173 ../../library/csv.rst:217
msgid ""
"If the argument passed to *fieldnames* is an iterator, it will be coerced to "
"a :class:`list`."
msgstr ""
"如果傳遞至 *fieldnames* 的引數是個疊代器,則會被迫成為一個 :class:`list`。"
#: ../../library/csv.rst:175
msgid "Returned rows are now of type :class:`OrderedDict`."
msgstr "回傳的列已成為型別 :class:`OrderedDict`。"
#: ../../library/csv.rst:178
msgid "Returned rows are now of type :class:`dict`."
msgstr "回傳的列已成為型別 :class:`dict`。"
#: ../../library/csv.rst:183
msgid ""
">>> import csv\n"
">>> with open('names.csv', newline='') as csvfile:\n"
"... reader = csv.DictReader(csvfile)\n"
"... for row in reader:\n"
"... print(row['first_name'], row['last_name'])\n"
"...\n"
"Eric Idle\n"
"John Cleese\n"
"\n"
">>> print(row)\n"
"{'first_name': 'John', 'last_name': 'Cleese'}"
msgstr ""
">>> import csv\n"
">>> with open('names.csv', newline='') as csvfile:\n"
"... reader = csv.DictReader(csvfile)\n"
"... for row in reader:\n"
"... print(row['first_name'], row['last_name'])\n"
"...\n"
"Eric Idle\n"
"John Cleese\n"
"\n"
">>> print(row)\n"
"{'first_name': 'John', 'last_name': 'Cleese'}"
#: ../../library/csv.rst:199
msgid ""
"Create an object which operates like a regular writer but maps dictionaries "
"onto output rows. The *fieldnames* parameter is a :mod:`sequence "
"<collections.abc>` of keys that identify the order in which values in the "
"dictionary passed to the :meth:`~csvwriter.writerow` method are written to "
"file *f*. The optional *restval* parameter specifies the value to be "
"written if the dictionary is missing a key in *fieldnames*. If the "
"dictionary passed to the :meth:`~csvwriter.writerow` method contains a key "
"not found in *fieldnames*, the optional *extrasaction* parameter indicates "
"what action to take. If it is set to ``'raise'``, the default value, a :exc:"
"`ValueError` is raised. If it is set to ``'ignore'``, extra values in the "
"dictionary are ignored. Any other optional or keyword arguments are passed "
"to the underlying :class:`writer` instance."
msgstr ""
"建立一個物件,其運作上就像一般的寫入器,但可以將 dictionary map 到輸出的列"
"上。參數 *fieldnames* 是一個鍵值的 :mod:`sequence <collections.abc>` 且可以辨"
"識 dictionary 中傳遞至 :meth:`~csvwriter.writerow` method 寫入至檔案 *f* 中的"
"值。如果 dictionary 中缺少了 *fieldnames* 的鍵值,則會寫入選填的參數 "
"*restval* 的值。如果傳遞至 :meth:`~csvwriter.writerow` method 的 dictionary "
"包含了一個 *fieldnames* 中不存在的鍵值,選填的參數 *extrasaction* 可以指出該"
"執行的動作。如果它被設定為 ``'raise'``,預設會觸發 :exc:`ValueError`。如果它"
"被設定為 ``'ignore'``,dictionary 中額外的值會被忽略。其他選填的引數或關鍵字"
"引數皆會傳遞至下層的 :class:`writer` 實例。"
#: ../../library/csv.rst:214
msgid ""
"Note that unlike the :class:`DictReader` class, the *fieldnames* parameter "
"of the :class:`DictWriter` class is not optional."
msgstr ""
"請記得這不像類別 :class:`DictReader`,在類別 :class:`DictWriter` 中,參數 "
"*fieldnames* 並不是選填的。"
#: ../../library/csv.rst:221
msgid ""
"import csv\n"
"\n"
"with open('names.csv', 'w', newline='') as csvfile:\n"
" fieldnames = ['first_name', 'last_name']\n"
" writer = csv.DictWriter(csvfile, fieldnames=fieldnames)\n"
"\n"
" writer.writeheader()\n"
" writer.writerow({'first_name': 'Baked', 'last_name': 'Beans'})\n"
" writer.writerow({'first_name': 'Lovely', 'last_name': 'Spam'})\n"
" writer.writerow({'first_name': 'Wonderful', 'last_name': 'Spam'})"
msgstr ""
"import csv\n"
"\n"
"with open('names.csv', 'w', newline='') as csvfile:\n"
" fieldnames = ['first_name', 'last_name']\n"
" writer = csv.DictWriter(csvfile, fieldnames=fieldnames)\n"
"\n"
" writer.writeheader()\n"
" writer.writerow({'first_name': 'Baked', 'last_name': 'Beans'})\n"
" writer.writerow({'first_name': 'Lovely', 'last_name': 'Spam'})\n"
" writer.writerow({'first_name': 'Wonderful', 'last_name': 'Spam'})"
#: ../../library/csv.rst:235
msgid ""
"The :class:`Dialect` class is a container class whose attributes contain "
"information for how to handle doublequotes, whitespace, delimiters, etc. Due "
"to the lack of a strict CSV specification, different applications produce "
"subtly different CSV data. :class:`Dialect` instances define how :class:"
"`reader` and :class:`writer` instances behave."
msgstr ""
"類別 :class:`Dialect` 是一個容器類別,其屬性 (attribute) 包含如何處理雙引號、"
"空白、分隔符號等資訊。由於缺少一個嚴謹的 CSV 技術規範,不同的應用程式會產出有"
"巧妙不同的 CSV 資料。:class:`Dialect` 實例定義了 :class:`reader` 以及 :class:"
"`writer` 的實例該如何表示。"
#: ../../library/csv.rst:241
msgid ""
"All available :class:`Dialect` names are returned by :func:`list_dialects`, "
"and they can be registered with specific :class:`reader` and :class:`writer` "
"classes through their initializer (``__init__``) functions like this::"
msgstr ""
"所有可用的 :class:`Dialect` 名稱會透過 :func:`list_dialects` 回傳,且它們可以"
"透過特定 :class:`reader` 及 :class:`writer` 類別的初始器 (initializer, "
"``__init__``) 函式進行註冊,就像這樣: ::"
#: ../../library/csv.rst:245
msgid ""
"import csv\n"
"\n"
"with open('students.csv', 'w', newline='') as csvfile:\n"
" writer = csv.writer(csvfile, dialect='unix')"
msgstr ""
"import csv\n"
"\n"
"with open('students.csv', 'w', newline='') as csvfile:\n"
" writer = csv.writer(csvfile, dialect='unix')"
#: ../../library/csv.rst:253
msgid ""
"The :class:`excel` class defines the usual properties of an Excel-generated "
"CSV file. It is registered with the dialect name ``'excel'``."
msgstr ""
"類別 :class:`excel` 定義了透過 Excel 產生的 CSV 檔案的慣用屬性。它被註冊的 "
"dialect 名稱為 ``'excel'``。"
#: ../../library/csv.rst:259
msgid ""
"The :class:`excel_tab` class defines the usual properties of an Excel-"
"generated TAB-delimited file. It is registered with the dialect name "
"``'excel-tab'``."
msgstr ""
"類別 :class:`excel_tab` 定義了透過 Excel 產生並以 Tab 作為分隔的 CSV 檔案的慣"
"用屬性。它被註冊的 dialect 名稱為 ``'excel-tab'``。"
#: ../../library/csv.rst:265
msgid ""
"The :class:`unix_dialect` class defines the usual properties of a CSV file "
"generated on UNIX systems, i.e. using ``'\\n'`` as line terminator and "
"quoting all fields. It is registered with the dialect name ``'unix'``."
msgstr ""
"類別 :class:`unix_dialect` 定義了透過 UNIX 系統產生的 CSV 檔案的慣用屬性,換"
"句話說,使用 ``'\\n'`` 作為換行符號且所有欄位都被引號包覆起來。它被註冊的 "
"dialect 名稱為 ``'unix'``。"
#: ../../library/csv.rst:274
msgid "The :class:`Sniffer` class is used to deduce the format of a CSV file."
msgstr "類別 :class:`Sniffer` 被用來推斷 CSV 檔案的格式。"
#: ../../library/csv.rst:276
msgid "The :class:`Sniffer` class provides two methods:"
msgstr "類別 :class:`Sniffer` 提供了兩個 method:"
#: ../../library/csv.rst:280
msgid ""
"Analyze the given *sample* and return a :class:`Dialect` subclass reflecting "
"the parameters found. If the optional *delimiters* parameter is given, it "
"is interpreted as a string containing possible valid delimiter characters."
msgstr ""
"分析給定的 *sample* 且回傳一個 :class:`Dialect` 子類別,反應出找到的格式參"
"數。如果給定選填的參數 *delimiters*,它會被解釋為一個字串且含有可能、有效的分"
"隔字元。"
#: ../../library/csv.rst:288
msgid ""
"Analyze the sample text (presumed to be in CSV format) and return :const:"
"`True` if the first row appears to be a series of column headers. Inspecting "
"each column, one of two key criteria will be considered to estimate if the "
"sample contains a header:"
msgstr ""
"如果第一列的文字顯示將作為一系列的欄位標題,會分析 sample 文字(假定他是 CSV "
"格式)並回傳 :const:`True`。檢查每一欄時,會考慮是否滿足兩個關鍵標準其中之"
"一,判斷 sample 是否包含標題:"
#: ../../library/csv.rst:293
msgid "the second through n-th rows contain numeric values"
msgstr "第二列至第 n 列包含數字"
#: ../../library/csv.rst:294
msgid ""
"the second through n-th rows contain strings where at least one value's "
"length differs from that of the putative header of that column."
msgstr ""
"第二列到第 n 列包含的字串中至少有一個值的長度與該行的假定標題的長度不同。"
#: ../../library/csv.rst:297
msgid ""
"Twenty rows after the first row are sampled; if more than half of columns + "
"rows meet the criteria, :const:`True` is returned."
msgstr ""
"對第一列之後的二十個列進行取樣;如果超過一半的行及列滿足條件,則返回 :const:"
"`True`。"
#: ../../library/csv.rst:302
msgid ""
"This method is a rough heuristic and may produce both false positives and "
"negatives."
msgstr ""
"此方法是一個粗略的啟發,可能會產生偽陽性及偽陰性 (false positives and "
"negatives)。"
#: ../../library/csv.rst:305
msgid "An example for :class:`Sniffer` use::"
msgstr "一個 :class:`Sniffer` 的使用範例: ::"
#: ../../library/csv.rst:307
msgid ""
"with open('example.csv', newline='') as csvfile:\n"
" dialect = csv.Sniffer().sniff(csvfile.read(1024))\n"
" csvfile.seek(0)\n"
" reader = csv.reader(csvfile, dialect)\n"
" # ... process CSV file contents here ..."
msgstr ""
"with open('example.csv', newline='') as csvfile:\n"
" dialect = csv.Sniffer().sniff(csvfile.read(1024))\n"
" csvfile.seek(0)\n"
" reader = csv.reader(csvfile, dialect)\n"
" # ... 在這邊處理 CSV 檔案 ..."
#: ../../library/csv.rst:316
msgid "The :mod:`csv` module defines the following constants:"
msgstr ":mod:`csv` 模組定義了以下常數:"
#: ../../library/csv.rst:320
msgid "Instructs :class:`writer` objects to quote all fields."
msgstr "引導 :class:`writer` 物件引用所有欄位。"
#: ../../library/csv.rst:325
msgid ""
"Instructs :class:`writer` objects to only quote those fields which contain "
"special characters such as *delimiter*, *quotechar* or any of the characters "
"in *lineterminator*."
msgstr ""
"引導 :class:`writer` 物件只引用包含特殊字元的欄位,例如:*分隔符號*、*引號*、"
"或是 *分行符號* 的其他字元。"
#: ../../library/csv.rst:332
msgid "Instructs :class:`writer` objects to quote all non-numeric fields."
msgstr "引導 :class:`writer` 物件引用所有非數字的欄位。"
#: ../../library/csv.rst:334
msgid ""
"Instructs :class:`reader` objects to convert all non-quoted fields to type "
"*float*."
msgstr "引導 :class:`reader` 物件轉換所有非引用的欄位為 *float*。"
#: ../../library/csv.rst:339
msgid ""
"Instructs :class:`writer` objects to never quote fields. When the current "
"*delimiter* occurs in output data it is preceded by the current *escapechar* "
"character. If *escapechar* is not set, the writer will raise :exc:`Error` "
"if any characters that require escaping are encountered."
msgstr ""
"引導 :class:`writer` 物件不得引用欄位。目前的 *分隔符號* 出現在輸出資料時,在"
"他之前的字元是目前的\\*逸出字元 (escape character)*。如果沒有設定\\*逸出字元"
"*\\,若遇到任何字元需要逸出,寫入器則會引發 :exc:`Error` 。"
#: ../../library/csv.rst:344
msgid ""
"Instructs :class:`reader` objects to perform no special processing of quote "
"characters."
msgstr "引導 :class:`reader` 物件不對引號進行特別處理。"
#: ../../library/csv.rst:348
msgid ""
"Instructs :class:`writer` objects to quote all fields which are not "
"``None``. This is similar to :data:`QUOTE_ALL`, except that if a field "
"value is ``None`` an empty (unquoted) string is written."
msgstr ""
"引導 :class:`writer` 物件引用所有非 ``None`` 的欄位。這與 :data:`QUOTE_ALL` "
"相似,除非如果欄位值為 ``None``,該欄位則被寫成空(沒有引號)字串。"
#: ../../library/csv.rst:352
msgid ""
"Instructs :class:`reader` objects to interpret an empty (unquoted) field as "
"``None`` and to otherwise behave as :data:`QUOTE_ALL`."
msgstr ""
"引導 :class:`reader` 物件將空(沒有引號)欄位直譯 (interpret) 為 ``None``,否"
"則會和 :data:`QUOTE_ALL` 有相同的表現方式。"
#: ../../library/csv.rst:359
msgid ""
"Instructs :class:`writer` objects to always place quotes around fields which "
"are strings. This is similar to :data:`QUOTE_NONNUMERIC`, except that if a "
"field value is ``None`` an empty (unquoted) string is written."
msgstr ""
"引導 :class:`writer` 物件永遠在字串的欄位前後放置引號。這與 :data:"
"`QUOTE_NONNUMERIC` 相似,除非如果欄位值為 ``None``,該欄位則被寫成空(沒有引"
"號)字串。"
#: ../../library/csv.rst:363
msgid ""
"Instructs :class:`reader` objects to interpret an empty (unquoted) string as "
"``None`` and to otherwise behave as :data:`QUOTE_NONNUMERIC`."
msgstr ""
"引導 :class:`reader` 物件將空(沒有引號)字串直譯為 ``None``,否則會和 :data:"
"`QUOTE_ALL` 有相同的表現方式。"
#: ../../library/csv.rst:368
msgid "The :mod:`csv` module defines the following exception:"
msgstr ":mod:`csv` 模組定義下列例外:"
#: ../../library/csv.rst:373
msgid "Raised by any of the functions when an error is detected."
msgstr "當偵測到錯誤時,任何函式都可以引發。"
#: ../../library/csv.rst:378
msgid "Dialects and Formatting Parameters"
msgstr "Dialect 與格式參數"
#: ../../library/csv.rst:380
msgid ""
"To make it easier to specify the format of input and output records, "
"specific formatting parameters are grouped together into dialects. A "
"dialect is a subclass of the :class:`Dialect` class containing various "
"attributes describing the format of the CSV file. When creating :class:"
"`reader` or :class:`writer` objects, the programmer can specify a string or "
"a subclass of the :class:`Dialect` class as the dialect parameter. In "
"addition to, or instead of, the *dialect* parameter, the programmer can also "
"specify individual formatting parameters, which have the same names as the "
"attributes defined below for the :class:`Dialect` class."
msgstr ""
"為了讓指定輸入及輸出紀錄的格式更方便,特定的格式化參數會被組成 dialect。一個 "
"dialect 是 :class:`Dialect` class 的子類別,其包含多個描述 CSV 檔案格式的多個"
"屬性。當建立 :class:`reader` 或 :class:`writer` 物件時,程式設計師可以指定一"
"個字串或是一個 :class:`Dialect` 的子類別作為 dialect 參數。此外,或是作為替"
"代,在\\ *dialect*\\ 參數中,程式設計師可以指定個別的格式化參數,其與 :class:"
"`Dialect` 類別定義的屬性具有相同的名字。"
#: ../../library/csv.rst:390
msgid "Dialects support the following attributes:"
msgstr "Dialect 支援下列屬性:"
#: ../../library/csv.rst:395
msgid ""
"A one-character string used to separate fields. It defaults to ``','``."
msgstr "一個單一字元 (one-character) 的字串可已用來分割欄位。預設為 ``','``。"
#: ../../library/csv.rst:400
msgid ""
"Controls how instances of *quotechar* appearing inside a field should "
"themselves be quoted. When :const:`True`, the character is doubled. When :"
"const:`False`, the *escapechar* is used as a prefix to the *quotechar*. It "
"defaults to :const:`True`."
msgstr ""
"控制 *quotechar* 的實例何時出現在欄位之中,並讓它們自己被放在引號之內。當屬性"
"為 :const:`True`,字元會是雙引號。若為 :const:`False`,在 *quotechar* 之前會"
"先使用 *escapechar* 作為前綴字。預設為 :const:`True`。"
#: ../../library/csv.rst:405
msgid ""
"On output, if *doublequote* is :const:`False` and no *escapechar* is set, :"
"exc:`Error` is raised if a *quotechar* is found in a field."
msgstr ""
"在輸出時,若 *doublequote* 是 :const:`False` 且\\ *逸出字元*\\ 沒有被設定,當"
"一個\\ *引號*\\ 在欄位中被發現時,:exc:`Error` 會被引發。"
#: ../../library/csv.rst:411
msgid ""
"A one-character string used by the writer to escape the *delimiter* if "
"*quoting* is set to :const:`QUOTE_NONE` and the *quotechar* if *doublequote* "
"is :const:`False`. On reading, the *escapechar* removes any special meaning "
"from the following character. It defaults to :const:`None`, which disables "
"escaping."
msgstr ""
"一個會被寫入器使用的單一字元的字串,當 *quoting* 設定為 :const:`QUOTE_NONE` "
"時逸出\\ *分隔符號*;當 *doublequote* 設定為 :const:`False` 時逸出\\ *引號*。"
"在讀取時,*逸出字元*\\ 會移除後面的字元以及任何特殊意義。預設為 :const:"
"`None`,表示禁止逸出。"
#: ../../library/csv.rst:416
msgid "An empty *escapechar* is not allowed."
msgstr "*escapechar* 為空是不被接受的。"
#: ../../library/csv.rst:421
msgid ""
"The string used to terminate lines produced by the :class:`writer`. It "
"defaults to ``'\\r\\n'``."
msgstr "由 :class:`writer` 產生被用來分行的字串。預設為 ``'\\r\\n'``。"
#: ../../library/csv.rst:426
msgid ""
"The :class:`reader` is hard-coded to recognise either ``'\\r'`` or ``'\\n'`` "
"as end-of-line, and ignores *lineterminator*. This behavior may change in "
"the future."
msgstr ""
":class:`reader` 是 hard-coded 辨別 ``'\\r'`` or ``'\\n'`` 作為行尾 (end-of-"
"line),並忽略\\ *分行符號*。未來可能會改變這個行為。"
#: ../../library/csv.rst:433
msgid ""
"A one-character string used to quote fields containing special characters, "
"such as the *delimiter* or *quotechar*, or which contain new-line "
"characters. It defaults to ``'\"'``."
msgstr ""
"一個單一字元的字串被用於引用包含特殊字元的欄位,像是 *delimiter*、"
"*quotechar* 或是換行字元。預設為 ``'\"'``。"
#: ../../library/csv.rst:437
msgid "An empty *quotechar* is not allowed."
msgstr "*quotechar* 為空是不被允許的。"
#: ../../library/csv.rst:442
msgid ""
"Controls when quotes should be generated by the writer and recognised by the "
"reader. It can take on any of the :ref:`QUOTE_\\* constants <csv-"
"constants>` and defaults to :const:`QUOTE_MINIMAL`."
msgstr ""
"控制 writer 何時產生引號,以及 reader 如何辨識引號。他可以使用任何 :ref:"
"`QUOTE_\\* 常數 <csv-constants>`\\ 且預設為 :const:`QUOTE_MINIMAL`。"
#: ../../library/csv.rst:449
msgid ""
"When :const:`True`, spaces immediately following the *delimiter* are "
"ignored. The default is :const:`False`."
msgstr ""
"若為 :const:`True`,在緊接著\\ *分隔符號*\\ 後的空格會被忽略。預設為 :const:"
"`False`。"
#: ../../library/csv.rst:455
msgid ""
"When ``True``, raise exception :exc:`Error` on bad CSV input. The default is "
"``False``."
msgstr ""
"若為 ``True``,若有錯誤的 CSV 輸入則會引發 :exc:`Error`。預設為 ``False``。"
#: ../../library/csv.rst:461
msgid "Reader Objects"
msgstr "讀取器物件"
#: ../../library/csv.rst:463
msgid ""
"Reader objects (:class:`DictReader` instances and objects returned by the :"
"func:`reader` function) have the following public methods:"
msgstr ""
"讀取器物件(:func:`reader` 函式回傳的 :class:`DictReader` 實例與物件)有下列"
"公用方法 (public method):"
#: ../../library/csv.rst:468
msgid ""
"Return the next row of the reader's iterable object as a list (if the object "
"was returned from :func:`reader`) or a dict (if it is a :class:`DictReader` "
"instance), parsed according to the current :class:`Dialect`. Usually you "
"should call this as ``next(reader)``."
msgstr ""
"回傳一個列表為讀入器的可疊代物件的下一列內容(若該物件是由 :func:`reader` 回"
"傳)或是一個 dict(若為 :class:`DictReader` 實例),會依據目前的 :class:"
"`Dialect` 進行剖析。通常會用 ``next(reader)`` 來進行呼叫。"
#: ../../library/csv.rst:474
msgid "Reader objects have the following public attributes:"
msgstr "讀取器物件有下列公用屬性 (public attributes):"
#: ../../library/csv.rst:478
msgid "A read-only description of the dialect in use by the parser."
msgstr "dialect 的唯讀敘述,會被剖析器使用。"
#: ../../library/csv.rst:483
msgid ""
"The number of lines read from the source iterator. This is not the same as "
"the number of records returned, as records can span multiple lines."
msgstr "來源疊代器所讀取的行數。這與回傳的紀錄數不同,因為可以進行跨行紀錄。"
#: ../../library/csv.rst:487
msgid "DictReader objects have the following public attribute:"
msgstr "DictReader 物件有下列公用屬性:"
#: ../../library/csv.rst:491
msgid ""
"If not passed as a parameter when creating the object, this attribute is "
"initialized upon first access or when the first record is read from the file."
msgstr ""
"若在建立物件時沒有作為參數傳遞,這個屬性會在第一次存取之前或是第一筆資料被讀"
"取之前進行初始化 (initialize)。"
#: ../../library/csv.rst:498
msgid "Writer Objects"
msgstr "寫入器物件"
#: ../../library/csv.rst:500
msgid ""
":class:`writer` objects (:class:`DictWriter` instances and objects returned "
"by the :func:`writer` function) have the following public methods. A *row* "
"must be an iterable of strings or numbers for :class:`writer` objects and a "
"dictionary mapping fieldnames to strings or numbers (by passing them "
"through :func:`str` first) for :class:`DictWriter` objects. Note that "
"complex numbers are written out surrounded by parens. This may cause some "
"problems for other programs which read CSV files (assuming they support "
"complex numbers at all)."
msgstr ""
":class:`writer` 物件(:func:`writer` 函式回傳的 :class:`DictWriter` 實例與物"
"件)有下列公用方法。對於 :class:`writer` 物件而言,一個\\ *列*\\ 中必須為一個"
"可疊代的字串或是數字;對於 :class:`DictWriter` 物件而言,則必須為一個 "
"dictionary ,且可以對應欄位標題至字串或數字(會先透過 :func:`str` 進行傳"
"遞)。請注意,在寫入複數 (complex number) 時會用小括號 (parens) 包起來。這可"
"能在其他程式讀取 CSV 檔案時導致某些問題(假設他們完全支援複雜數字)。"
#: ../../library/csv.rst:511
msgid ""
"Write the *row* parameter to the writer's file object, formatted according "
"to the current :class:`Dialect`. Return the return value of the call to the "
"*write* method of the underlying file object."
msgstr ""
"將參數 *row* 寫入至寫入器的檔案物件中,並依照目前的 :class:`Dialect` 進行格式"
"化。回傳下層檔案物件 *write* 方法的回傳值。"
#: ../../library/csv.rst:515
msgid "Added support of arbitrary iterables."
msgstr "新增對任意可疊代物件 (arbitrary iterables) 的支援。"
#: ../../library/csv.rst:520
msgid ""
"Write all elements in *rows* (an iterable of *row* objects as described "
"above) to the writer's file object, formatted according to the current "
"dialect."
msgstr ""
"將 *rows* 中所有元素(為上述的一個可疊代的 *row* 物件)寫入至寫入器的檔案物件"
"中,並依照目前的 dialect 進行格式化。"
#: ../../library/csv.rst:524
msgid "Writer objects have the following public attribute:"
msgstr "寫入器物件有下列公用屬性:"
#: ../../library/csv.rst:529
msgid "A read-only description of the dialect in use by the writer."
msgstr "dialect 的唯讀敘述,會被寫入器使用。"
#: ../../library/csv.rst:532
msgid "DictWriter objects have the following public method:"
msgstr "DictWriter 物件有下列公用方法:"
#: ../../library/csv.rst:537
msgid ""
"Write a row with the field names (as specified in the constructor) to the "
"writer's file object, formatted according to the current dialect. Return the "
"return value of the :meth:`csvwriter.writerow` call used internally."
msgstr ""
"將具欄位標題的一列(於建構函式 (constructor) 中指定的)寫入至寫入器的檔案物件"
"中,並依照目前的 dialect 進行格式化。回傳內部呼叫 :meth:`csvwriter.writerow` "
"的回傳值。"
#: ../../library/csv.rst:542
msgid ""
":meth:`writeheader` now also returns the value returned by the :meth:"
"`csvwriter.writerow` method it uses internally."
msgstr ""
":meth:`writeheader` 現在也會回傳內部呼叫 :meth:`csvwriter.writerow` 的回傳"
"值。"
#: ../../library/csv.rst:550
msgid "Examples"
msgstr "範例"
#: ../../library/csv.rst:552
msgid "The simplest example of reading a CSV file::"
msgstr "最簡單的讀取 CSV 檔案範例: ::"
#: ../../library/csv.rst:554
msgid ""
"import csv\n"
"with open('some.csv', newline='') as f:\n"
" reader = csv.reader(f)\n"
" for row in reader:\n"
" print(row)"
msgstr ""
"import csv\n"
"with open('some.csv', newline='') as f:\n"
" reader = csv.reader(f)\n"
" for row in reader:\n"
" print(row)"
#: ../../library/csv.rst:560
msgid "Reading a file with an alternate format::"
msgstr "讀取一個其他格式的檔案: ::"
#: ../../library/csv.rst:562
msgid ""
"import csv\n"
"with open('passwd', newline='') as f:\n"
" reader = csv.reader(f, delimiter=':', quoting=csv.QUOTE_NONE)\n"
" for row in reader:\n"
" print(row)"
msgstr ""
"import csv\n"
"with open('passwd', newline='') as f:\n"
" reader = csv.reader(f, delimiter=':', quoting=csv.QUOTE_NONE)\n"
" for row in reader:\n"
" print(row)"
#: ../../library/csv.rst:568
msgid "The corresponding simplest possible writing example is::"
msgstr "相對最簡單、可行的寫入範例為: ::"
#: ../../library/csv.rst:570
msgid ""
"import csv\n"
"with open('some.csv', 'w', newline='') as f:\n"
" writer = csv.writer(f)\n"
" writer.writerows(someiterable)"
msgstr ""
#: ../../library/csv.rst:575
msgid ""
"Since :func:`open` is used to open a CSV file for reading, the file will by "
"default be decoded into unicode using the system default encoding (see :func:"
"`locale.getencoding`). To decode a file using a different encoding, use the "
"``encoding`` argument of open::"
msgstr ""
"當 :func:`open` 被使用於開啟並讀取一個 CSV 檔案,該檔案會預設使用系統預設的編"
"碼格式(請見 :func:`locale.getencoding`),並解碼為 unicode。若要使用不同編碼"
"格式進行檔案解碼,請使用 open 函式的 ``encoding`` 引數: ::"
#: ../../library/csv.rst:580
msgid ""
"import csv\n"
"with open('some.csv', newline='', encoding='utf-8') as f:\n"
" reader = csv.reader(f)\n"
" for row in reader:\n"
" print(row)"
msgstr ""
"import csv\n"
"with open('some.csv', newline='', encoding='utf-8') as f:\n"
" reader = csv.reader(f)\n"
" for row in reader:\n"
" print(row)"
#: ../../library/csv.rst:586
msgid ""
"The same applies to writing in something other than the system default "
"encoding: specify the encoding argument when opening the output file."
msgstr ""
"同理可以應用到使用不同編碼格式進行寫入:當開啟輸出檔案時,指定 ``encoding`` "
"引數。"
#: ../../library/csv.rst:589
msgid "Registering a new dialect::"
msgstr "註冊一個新的 dialect : ::"
#: ../../library/csv.rst:591
msgid ""
"import csv\n"
"csv.register_dialect('unixpwd', delimiter=':', quoting=csv.QUOTE_NONE)\n"
"with open('passwd', newline='') as f:\n"
" reader = csv.reader(f, 'unixpwd')"
msgstr ""
"import csv\n"
"csv.register_dialect('unixpwd', delimiter=':', quoting=csv.QUOTE_NONE)\n"
"with open('passwd', newline='') as f:\n"
" reader = csv.reader(f, 'unixpwd')"
#: ../../library/csv.rst:596
msgid ""
"A slightly more advanced use of the reader --- catching and reporting "
"errors::"
msgstr "稍微進階的讀取器用法 -- 擷取及回報錯誤: ::"
#: ../../library/csv.rst:598
msgid ""
"import csv, sys\n"
"filename = 'some.csv'\n"
"with open(filename, newline='') as f:\n"
" reader = csv.reader(f)\n"
" try:\n"
" for row in reader:\n"
" print(row)\n"
" except csv.Error as e:\n"
" sys.exit('file {}, line {}: {}'.format(filename, reader.line_num, e))"
msgstr ""
"import csv, sys\n"
"filename = 'some.csv'\n"
"with open(filename, newline='') as f:\n"
" reader = csv.reader(f)\n"
" try:\n"
" for row in reader:\n"
" print(row)\n"
" except csv.Error as e:\n"
" sys.exit('file {}, line {}: {}'.format(filename, reader.line_num, e))"
#: ../../library/csv.rst:608
msgid ""
"And while the module doesn't directly support parsing strings, it can easily "
"be done::"
msgstr "而當模組無法直接支援剖析字串時,仍可以輕鬆的解決: ::"
#: ../../library/csv.rst:611
msgid ""
"import csv\n"
"for row in csv.reader(['one,two,three']):\n"
" print(row)"
msgstr ""
"import csv\n"
"for row in csv.reader(['one,two,three']):\n"
" print(row)"
#: ../../library/csv.rst:617
msgid "Footnotes"
msgstr "註解"
#: ../../library/csv.rst:618
msgid ""
"If ``newline=''`` is not specified, newlines embedded inside quoted fields "
"will not be interpreted correctly, and on platforms that use ``\\r\\n`` "