Hướng dẫn what is a quotechar in csv python? - một quotechar trong csv python là gì?

Đối số id,name,email,age,designation 1,John,,24,programmer 2,Bob,,34,designer 3,Mary,,43,sales 0 là

Một chuỗi một ký tự được sử dụng để trích dẫn các trường chứa các ký tự đặc biệt, chẳng hạn như DELIMITER hoặc QUOTERCHAR hoặc có chứa các ký tự dòng mới. Nó mặc định là '"'.

Ví dụ,

Nếu tệp

id,name,email,age,designation
1,John,,24,programmer
2,Bob,,34,designer
3,Mary,,43,sales
1 của bạn chứa dữ liệu của biểu mẫu

|Hello|,|My|,|name|,|is|,|"John"|
|Hello|,|My|,|name|,|is|,|"Tom"|

Sau đó, trong trường hợp đó, bạn không thể sử dụng mặc định

id,name,email,age,designation
1,John,,24,programmer
2,Bob,,34,designer
3,Mary,,43,sales
0 là
id,name,email,age,designation
1,John,,24,programmer
2,Bob,,34,designer
3,Mary,,43,sales
3 vì nó đã có trong các thực thể của dữ liệu CSV để hướng dẫn đầu đọc CSV mà bạn muốn
id,name,email,age,designation
1,John,,24,programmer
2,Bob,,34,designer
3,Mary,,43,sales
4 được đưa vào đầu ra, bạn sẽ chỉ định một số
id,name,email,age,designation
1,John,,24,programmer
2,Bob,,34,designer
3,Mary,,43,sales
0, nó có thể là
id,name,email,age,designation
1,John,,24,programmer
2,Bob,,34,designer
3,Mary,,43,sales
6 hoặc
id,name,email,age,designation
1,John,,24,programmer
2,Bob,,34,designer
3,Mary,,43,sales
7 hoặc bất kỳ ký tự nào tùy thuộc vào các yêu cầu.

Đầu ra bây giờ bao gồm

id,name,email,age,designation
1,John,,24,programmer
2,Bob,,34,designer
3,Mary,,43,sales
8 và
id,name,email,age,designation
1,John,,24,programmer
2,Bob,,34,designer
3,Mary,,43,sales
9 trong dấu ngoặc kép,

['Hello', 'My', 'name', 'is', '"John"']
['Hello', 'My', 'name', 'is', '"Tom"']

Hãy xem xét một ví dụ khác trong đó trường CSV chứa

import csv

with open('employees.csv', 'rt') as f:
    csv_reader = csv.reader(f)

    for line in csv_reader:
        print(line)
0, hãy xem xét tệp
id,name,email,age,designation
1,John,,24,programmer
2,Bob,,34,designer
3,Mary,,43,sales
1 chứa
where csv field itself contains
import csv

with open('employees.csv', 'rt') as f:
    csv_reader = csv.reader(f)

    for line in csv_reader:
        print(line)
0, consider the
id,name,email,age,designation
1,John,,24,programmer
2,Bob,,34,designer
3,Mary,,43,sales
1 file contains

"Fruit","Quantity","Cost"
"Strawberry","1000","$2,200"
"Apple","500","$1,100"

Bây giờ trong trường hợp như vậy, bạn phải chỉ định

id,name,email,age,designation
1,John,,24,programmer
2,Bob,,34,designer
3,Mary,,43,sales
0 một cách rõ ràng để hướng dẫn đầu đọc CSV để nó có thể phân biệt giữa dấu phân cách thực tế (ký tự điều khiển) và dấu phẩy (ký tự nghĩa đen) trong trường CSV. Bây giờ trong trường hợp này,
id,name,email,age,designation
1,John,,24,programmer
2,Bob,,34,designer
3,Mary,,43,sales
0
id,name,email,age,designation
1,John,,24,programmer
2,Bob,,34,designer
3,Mary,,43,sales
3 cũng sẽ hoạt động.


Bây giờ đến với mã của bạn, bạn phải thay thế không gian trắng thêm trước

import csv

with open('employees.csv', 'rt') as f:
    csv_reader = csv.reader(f)

    for line in csv_reader:
        print(line)
0 trong tệp
id,name,email,age,designation
1,John,,24,programmer
2,Bob,,34,designer
3,Mary,,43,sales
1 bằng chuỗi trống. Bạn có thể làm điều này theo cách sau:

Thử cái này:

from io import StringIO

with open("test.csv", newline="") as f:
    file = StringIO(f.read().replace(" ,", ","))
    reader = csv.reader(file, delimiter=",", quotechar="|")
    for row in reader:
        print(row)

Điều này xuất hiện,

['Hello', 'My', 'name', 'is', 'John']

  1. Nhà
  2. Python: Cách đọc và ghi các tệp CSV

. Tìm hiểu khoa học dữ liệu bằng cách hoàn thành các thách thức mã hóa tương tác và xem video của các giảng viên chuyên gia. Bắt đầu bây giờ!


Cập nhật vào ngày 07 tháng 1 năm 2020


Tệp CSV là gì? #


CSV (giá trị phân tách bằng dấu phẩy) là một định dạng trao đổi dữ liệu phổ biến được sử dụng bởi các ứng dụng để tạo và tiêu thụ dữ liệu. Một số định dạng trao đổi dữ liệu nổi tiếng khác là XML, HTML, JSON, v.v.

Tệp CSV là một tệp văn bản đơn giản trong đó mỗi dòng chứa một danh sách các giá trị (hoặc trường) được phân định bởi dấu phẩy.

Mặc dù thuật ngữ "dấu phẩy" xuất hiện trong chính tên định dạng, nhưng bạn sẽ gặp các tệp CSV trong đó dữ liệu được phân định bằng tab (

import csv

with open('employees.csv', 'rt') as f:
    csv_reader = csv.reader(f)

    for line in csv_reader:
        print(line)
7) hoặc đường ống (
id,name,email,age,designation
1,John,,24,programmer
2,Bob,,34,designer
3,Mary,,43,sales
6) hoặc bất kỳ ký tự nào khác có thể được sử dụng làm dấu phân cách.

Dòng đầu tiên của tệp CSV đại diện cho tiêu đề chứa danh sách các tên cột trong tệp. Tiêu đề là tùy chọn nhưng rất khuyến khích.

Tệp CSV thường được sử dụng để biểu diễn dữ liệu bảng. Ví dụ, hãy xem xét bảng sau:

TÔITênMã quốc giaHuyệnDân số
1 KabulAFGKabol1780000
2 QandaharAFGQandahar237500
3 HeratAFGHerat186800
4 Mazar-e-SharifAFGKabol127800
5 QandaharHeratMazar-e-Sharif731200

Balkh

"ID","Name","CountryCode","District","Population"
"1","Kabul","AFG","Kabol","1780000"
"2","Qandahar","AFG","Qandahar","237500"
"3","Herat","AFG","Herat","186800"
"4","Mazar-e-Sharif","AFG","Balkh","127800"
"5","Amsterdam","NLD","Noord-Holland","731200"

Amsterdam

TênMã quốc giaHuyện
Dân số10 Kabul
AFG20 Kabol
Qandahar30 Herat

Mazar-e-Sharif

Name,Age,Address
Jerry,10,"2776 McDowell Street, Nashville, Tennessee"
Tom,20,"3171 Jessie Street, Westerville, Ohio"
Mike,30,"1818 Sherman Street, Hope, Kansas"

Balkh

AmsterdamNLDNoord-Hà Lan
1 Bảng trên có thể được biểu diễn bằng định dạng CSV như sau:Nếu các giá trị trong tệp CSV của bạn chứa dấu phẩy, thì nó phải được đặt bên trong các trích dẫn kép. Ví dụ:
2 AFGKabol

Qandahar

Id,User,Comment
1,Bob,"John said ""Hello World"""
2,Tom,""The Magician""

Herat

Mazar-e-Sharif

Balkh

Amsterdam

  1. ['Hello', 'My', 'name', 'is', '"John"']
    ['Hello', 'My', 'name', 'is', '"Tom"']
    
    01
  2. ['Hello', 'My', 'name', 'is', '"John"']
    ['Hello', 'My', 'name', 'is', '"Tom"']
    
    02
  3. ['Hello', 'My', 'name', 'is', '"John"']
    ['Hello', 'My', 'name', 'is', '"Tom"']
    
    03
  4. ['Hello', 'My', 'name', 'is', '"John"']
    ['Hello', 'My', 'name', 'is', '"Tom"']
    
    04

NLD

Noord-Hà Lan


Bảng trên có thể được biểu diễn bằng định dạng CSV như sau:

Nếu các giá trị trong tệp CSV của bạn chứa dấu phẩy, thì nó phải được đặt bên trong các trích dẫn kép. Ví dụ: reader(fileobj [, dialect='excel' [, **fmtparam] ]) ->  _csv.reader

Tuổi tácĐịa chỉ nhà
Jerry2776 McDowell Street, Nashville, Tennessee
Tom3171 Jessie Street, Westerville, Ohio
Mike1818 Phố Sherman, Hope, Kansas

Để giữ lại dấu phẩy bên trong trường địa chỉ, kèm theo nó trong các dấu ngoặc kép, như sau:

employees.csv

id,name,email,age,designation
1,John,,24,programmer
2,Bob,,34,designer
3,Mary,,43,sales

Tương tự, nếu bạn có dấu ngoặc kép được nhúng bên trong một trường, nó phải được thoát với một ký tự trích dẫn kép khác. Nếu không, họ sẽ không được giải thích chính xác. Ví dụ:

import csv

with open('employees.csv', 'rt') as f:
    csv_reader = csv.reader(f)

    for line in csv_reader:
        print(line)

ID

['Hello', 'My', 'name', 'is', '"John"']
['Hello', 'My', 'name', 'is', '"Tom"']
0

Người sử dụng

Bình luận

['Hello', 'My', 'name', 'is', '"John"']
['Hello', 'My', 'name', 'is', '"Tom"']
1

ID

['Hello', 'My', 'name', 'is', '"John"']
['Hello', 'My', 'name', 'is', '"Tom"']
2

Người sử dụng

['Hello', 'My', 'name', 'is', '"John"']
['Hello', 'My', 'name', 'is', '"Tom"']
3

ID

['Hello', 'My', 'name', 'is', '"John"']
['Hello', 'My', 'name', 'is', '"Tom"']
4

Người sử dụng


Bình luận

Sau đây là một số đối số bổ sung mà bạn có thể chuyển đến hàm

['Hello', 'My', 'name', 'is', '"John"']
['Hello', 'My', 'name', 'is', '"Tom"']
01 để tùy chỉnh hoạt động của nó.

  • ________ 90 & nbsp;- Nó đề cập đến ký tự được sử dụng để tách các giá trị (hoặc trường) trong tệp CSV. Nó mặc định là dấu phẩy (
    ['Hello', 'My', 'name', 'is', '"John"']
    ['Hello', 'My', 'name', 'is', '"Tom"']
    
    18).
  • ________ 119 & nbsp; - Nó kiểm soát cách không gian theo dấu phân cách sẽ được giải thích. Nếu đúng & nbsp ;, không gian trắng ban đầu sẽ bị loại bỏ. Nó mặc định là
    ['Hello', 'My', 'name', 'is', '"John"']
    ['Hello', 'My', 'name', 'is', '"Tom"']
    
    20.
  • ________ 121 & nbsp;- Nó đề cập đến trình tự ký tự được sử dụng để chấm dứt dòng. Nó mặc định là
    ['Hello', 'My', 'name', 'is', '"John"']
    ['Hello', 'My', 'name', 'is', '"Tom"']
    
    22.
  • ________ 80 & nbsp;- Nó đề cập đến chuỗi ký tự đơn sẽ được sử dụng để trích dẫn các giá trị nếu các ký tự đặc biệt (như Delimiter) xuất hiện bên trong trường. Nó mặc định là
    id,name,email,age,designation
    1,John,,24,programmer
    2,Bob,,34,designer
    3,Mary,,43,sales
    
    3.
  • ________ 125 & nbsp; - Kiểm soát khi trích dẫn nên được tạo bởi người đọc hoặc được người đọc công nhận. Nó có thể mất một trong những hằng số sau:
    • ['Hello', 'My', 'name', 'is', '"John"']
      ['Hello', 'My', 'name', 'is', '"Tom"']
      
      26 có nghĩa là chỉ thêm báo giá khi được yêu cầu, ví dụ, khi một trường chứa quotechar hoặc dấu phân cách. Đây là mặc định.
    • ________ 127 & nbsp; có nghĩa là trích dẫn mọi thứ bất kể loại trường.
    • ________ 128 & nbsp; có nghĩa là trích dẫn mọi thứ ngoại trừ số nguyên và phao.
    • ________ 129 & nbsp; có nghĩa là không trích dẫn bất cứ điều gì trên đầu ra. Tuy nhiên, trong khi đọc trích dẫn được bao gồm xung quanh các giá trị trường.
  • ________ 130 & nbsp;- Nó đề cập đến chuỗi một ký tự được sử dụng để thoát khỏi dấu phân cách khi trích dẫn được đặt thành
    ['Hello', 'My', 'name', 'is', '"John"']
    ['Hello', 'My', 'name', 'is', '"Tom"']
    
    31. Nó mặc định là
    ['Hello', 'My', 'name', 'is', '"John"']
    ['Hello', 'My', 'name', 'is', '"Tom"']
    
    32.
  • ________ 133 & nbsp; - Kiểm soát việc xử lý các trích dẫn bên trong các trường. Khi
    ['Hello', 'My', 'name', 'is', '"John"']
    ['Hello', 'My', 'name', 'is', '"Tom"']
    
    34, hai trích dẫn liên tiếp được hiểu là một trong khi đọc và khi viết, mỗi ký tự trích dẫn được nhúng trong dữ liệu được viết là hai trích dẫn. Hãy làm việc một số ví dụ để hiểu rõ hơn về cách các đối số này hoạt động:

Đối số phân định #


employees_pipe.csv

['Hello', 'My', 'name', 'is', '"John"']
['Hello', 'My', 'name', 'is', '"Tom"']
5

Tệp này sử dụng ký tự ống (

id,name,email,age,designation
1,John,,24,programmer
2,Bob,,34,designer
3,Mary,,43,sales
6) làm dấu phân cách. Dưới đây là cách đọc tệp CSV này:

['Hello', 'My', 'name', 'is', '"John"']
['Hello', 'My', 'name', 'is', '"Tom"']
6

Đầu ra dự kiến:

['Hello', 'My', 'name', 'is', '"John"']
['Hello', 'My', 'name', 'is', '"Tom"']
7

Bỏ qua


baseball_players.csv

['Hello', 'My', 'name', 'is', '"John"']
['Hello', 'My', 'name', 'is', '"Tom"']
8

Tệp CSV này chứa các khoảng trắng theo dấu phẩy (

['Hello', 'My', 'name', 'is', '"John"']
['Hello', 'My', 'name', 'is', '"Tom"']
18). Để đọc chính xác tệp CSV này, đặt
['Hello', 'My', 'name', 'is', '"John"']
['Hello', 'My', 'name', 'is', '"Tom"']
19 thành
['Hello', 'My', 'name', 'is', '"John"']
['Hello', 'My', 'name', 'is', '"Tom"']
34, như sau:

['Hello', 'My', 'name', 'is', '"John"']
['Hello', 'My', 'name', 'is', '"Tom"']
9

Đầu ra dự kiến:

"Fruit","Quantity","Cost"
"Strawberry","1000","$2,200"
"Apple","500","$1,100"
0

Bỏ qua


addresses.csv

"Fruit","Quantity","Cost"
"Strawberry","1000","$2,200"
"Apple","500","$1,100"
1

Tệp CSV này chứa các khoảng trắng theo dấu phẩy (

['Hello', 'My', 'name', 'is', '"John"']
['Hello', 'My', 'name', 'is', '"Tom"']
18). Để đọc chính xác tệp CSV này, đặt
['Hello', 'My', 'name', 'is', '"John"']
['Hello', 'My', 'name', 'is', '"Tom"']
19 thành
['Hello', 'My', 'name', 'is', '"John"']
['Hello', 'My', 'name', 'is', '"Tom"']
34, như sau:

quotechar & nbsp; đối số #

"Fruit","Quantity","Cost"
"Strawberry","1000","$2,200"
"Apple","500","$1,100"
2

Đầu ra dự kiến:

"Fruit","Quantity","Cost"
"Strawberry","1000","$2,200"
"Apple","500","$1,100"
3

Bỏ qua

"Fruit","Quantity","Cost"
"Strawberry","1000","$2,200"
"Apple","500","$1,100"
4

Đầu ra dự kiến:

"Fruit","Quantity","Cost"
"Strawberry","1000","$2,200"
"Apple","500","$1,100"
5

Bỏ qua


comments.csv

"Fruit","Quantity","Cost"
"Strawberry","1000","$2,200"
"Apple","500","$1,100"
6

Tệp CSV này chứa các khoảng trắng theo dấu phẩy (

['Hello', 'My', 'name', 'is', '"John"']
['Hello', 'My', 'name', 'is', '"Tom"']
18). Để đọc chính xác tệp CSV này, đặt
['Hello', 'My', 'name', 'is', '"John"']
['Hello', 'My', 'name', 'is', '"Tom"']
19 thành
['Hello', 'My', 'name', 'is', '"John"']
['Hello', 'My', 'name', 'is', '"Tom"']
34, như sau:

quotechar & nbsp; đối số #

"Fruit","Quantity","Cost"
"Strawberry","1000","$2,200"
"Apple","500","$1,100"
7

Đầu ra dự kiến:

"Fruit","Quantity","Cost"
"Strawberry","1000","$2,200"
"Apple","500","$1,100"
8

Bỏ qua

"Fruit","Quantity","Cost"
"Strawberry","1000","$2,200"
"Apple","500","$1,100"
9

Đầu ra dự kiến:

from io import StringIO

with open("test.csv", newline="") as f:
    file = StringIO(f.read().replace(" ,", ","))
    reader = csv.reader(file, delimiter=",", quotechar="|")
    for row in reader:
        print(row)
0

Bỏ qua


dialogues.csv

from io import StringIO

with open("test.csv", newline="") as f:
    file = StringIO(f.read().replace(" ,", ","))
    reader = csv.reader(file, delimiter=",", quotechar="|")
    for row in reader:
        print(row)
1

Tệp CSV này chứa các khoảng trắng theo dấu phẩy (

['Hello', 'My', 'name', 'is', '"John"']
['Hello', 'My', 'name', 'is', '"Tom"']
18). Để đọc chính xác tệp CSV này, đặt
['Hello', 'My', 'name', 'is', '"John"']
['Hello', 'My', 'name', 'is', '"Tom"']
19 thành
['Hello', 'My', 'name', 'is', '"John"']
['Hello', 'My', 'name', 'is', '"Tom"']
34, như sau:

from io import StringIO

with open("test.csv", newline="") as f:
    file = StringIO(f.read().replace(" ,", ","))
    reader = csv.reader(file, delimiter=",", quotechar="|")
    for row in reader:
        print(row)
2

Đầu ra dự kiến:

from io import StringIO

with open("test.csv", newline="") as f:
    file = StringIO(f.read().replace(" ,", ","))
    reader = csv.reader(file, delimiter=",", quotechar="|")
    for row in reader:
        print(row)
3

Bỏ qua

from io import StringIO

with open("test.csv", newline="") as f:
    file = StringIO(f.read().replace(" ,", ","))
    reader = csv.reader(file, delimiter=",", quotechar="|")
    for row in reader:
        print(row)
4

Đầu ra dự kiến:

from io import StringIO

with open("test.csv", newline="") as f:
    file = StringIO(f.read().replace(" ,", ","))
    reader = csv.reader(file, delimiter=",", quotechar="|")
    for row in reader:
        print(row)
5

Bỏ qua


Tệp CSV này chứa các khoảng trắng theo dấu phẩy (

['Hello', 'My', 'name', 'is', '"John"']
['Hello', 'My', 'name', 'is', '"Tom"']
18). Để đọc chính xác tệp CSV này, đặt
['Hello', 'My', 'name', 'is', '"John"']
['Hello', 'My', 'name', 'is', '"Tom"']
19 thành
['Hello', 'My', 'name', 'is', '"John"']
['Hello', 'My', 'name', 'is', '"Tom"']
34, như sau:

quotechar & nbsp; đối số #

['Hello', 'My', 'name', 'is', '"John"']
['Hello', 'My', 'name', 'is', '"Tom"']
54

Có hai điều cần chú ý trong tập tin này. Đầu tiên, trường địa chỉ được bọc bằng cách sử dụng một báo giá đơn (
['Hello', 'My', 'name', 'is', '"John"']
['Hello', 'My', 'name', 'is', '"Tom"']
39) thay vì trích dẫn kép
id,name,email,age,designation
1,John,,24,programmer
2,Bob,,34,designer
3,Mary,,43,sales
3 (là mặc định). Thứ hai, có những không gian theo dấu phẩy (
['Hello', 'My', 'name', 'is', '"John"']
['Hello', 'My', 'name', 'is', '"Tom"']
18).
Nếu bạn cố gắng đọc tệp này mà không thay đổi ký tự trích dẫn, bạn sẽ nhận được đầu ra như sau:
Lưu ý rằng địa chỉ được chia thành ba trường, điều này chắc chắn không chính xác. Để khắc phục sự cố, chỉ cần thay đổi ký tự trích dẫn thành một trích dẫn duy nhất (
['Hello', 'My', 'name', 'is', '"John"']
['Hello', 'My', 'name', 'is', '"Tom"']
39) bằng cách sử dụng đối số
id,name,email,age,designation
1,John,,24,programmer
2,Bob,,34,designer
3,Mary,,43,sales
0:
Escapechar & nbsp; đối số #
Tệp này sử dụng ký tự Backslash (
['Hello', 'My', 'name', 'is', '"John"']
['Hello', 'My', 'name', 'is', '"Tom"']
44) để thoát khỏi các trích dẫn kép được nhúng. Tuy nhiên, theo mặc định, mô -đun
id,name,email,age,designation
1,John,,24,programmer
2,Bob,,34,designer
3,Mary,,43,sales
1 mặc định sử dụng ký tự trích dẫn kép để thoát khỏi ký tự trích dẫn kép.
Nếu cố gắng đọc tệp này bằng các tùy chọn mặc định, bạn sẽ nhận được đầu ra như thế này:
Đầu ra này chắc chắn không mong muốn. Để có được sự thay đổi đầu ra chính xác, ký tự thoát bằng đối số
['Hello', 'My', 'name', 'is', '"John"']
['Hello', 'My', 'name', 'is', '"Tom"']
30, như sau:
doublequote & nbsp; đối số #

Tệp này sử dụng báo giá kép để thoát các ký tự trích dẫn kép được nhúng trong trường. Theo mặc định,

['Hello', 'My', 'name', 'is', '"John"']
['Hello', 'My', 'name', 'is', '"Tom"']
33 được đặt thành
['Hello', 'My', 'name', 'is', '"John"']
['Hello', 'My', 'name', 'is', '"Tom"']
34. Kết quả là, trong khi đọc hai trích dẫn đôi liên tiếp được hiểu là một.

Tuy nhiên, nếu bạn đặt
['Hello', 'My', 'name', 'is', '"John"']
['Hello', 'My', 'name', 'is', '"Tom"']
33 thành
['Hello', 'My', 'name', 'is', '"John"']
['Hello', 'My', 'name', 'is', '"Tom"']
20, các báo giá kép liên tiếp sẽ xuất hiện trong đầu ra.
Nếu bạn cố gắng đọc tệp này mà không thay đổi ký tự trích dẫn, bạn sẽ nhận được đầu ra như sau:
Lưu ý rằng địa chỉ được chia thành ba trường, điều này chắc chắn không chính xác. Để khắc phục sự cố, chỉ cần thay đổi ký tự trích dẫn thành một trích dẫn duy nhất (
['Hello', 'My', 'name', 'is', '"John"']
['Hello', 'My', 'name', 'is', '"Tom"']
39) bằng cách sử dụng đối số
id,name,email,age,designation
1,John,,24,programmer
2,Bob,,34,designer
3,Mary,,43,sales
0:
Escapechar & nbsp; đối số #
['Hello', 'My', 'name', 'is', '"John"']
['Hello', 'My', 'name', 'is', '"Tom"']
62
Viết nhiều hàng dữ liệu và trả về
['Hello', 'My', 'name', 'is', '"John"']
['Hello', 'My', 'name', 'is', '"Tom"']
32.
['Hello', 'My', 'name', 'is', '"John"']
['Hello', 'My', 'name', 'is', '"Tom"']
64 phải là một chuỗi.

Đây là những ví dụ:

Ví dụ 1: Sử dụng

['Hello', 'My', 'name', 'is', '"John"']
['Hello', 'My', 'name', 'is', '"Tom"']
65: Using
['Hello', 'My', 'name', 'is', '"John"']
['Hello', 'My', 'name', 'is', '"Tom"']
65

from io import StringIO

with open("test.csv", newline="") as f:
    file = StringIO(f.read().replace(" ,", ","))
    reader = csv.reader(file, delimiter=",", quotechar="|")
    for row in reader:
        print(row)
6

from io import StringIO

with open("test.csv", newline="") as f:
    file = StringIO(f.read().replace(" ,", ","))
    reader = csv.reader(file, delimiter=",", quotechar="|")
    for row in reader:
        print(row)
7

Ví dụ 2: Sử dụng

['Hello', 'My', 'name', 'is', '"John"']
['Hello', 'My', 'name', 'is', '"Tom"']
66: Using
['Hello', 'My', 'name', 'is', '"John"']
['Hello', 'My', 'name', 'is', '"Tom"']
66

from io import StringIO

with open("test.csv", newline="") as f:
    file = StringIO(f.read().replace(" ,", ","))
    reader = csv.reader(file, delimiter=",", quotechar="|")
    for row in reader:
        print(row)
8

from io import StringIO

with open("test.csv", newline="") as f:
    file = StringIO(f.read().replace(" ,", ","))
    reader = csv.reader(file, delimiter=",", quotechar="|")
    for row in reader:
        print(row)
9

Đầu ra được tạo ra bởi cả hai danh sách sẽ giống nhau và nó trông như thế này:

customers.csv

['Hello', 'My', 'name', 'is', 'John']
0

Lưu ý rằng chỉ trường địa chỉ được bọc xung quanh báo giá kép. Điều này là do theo mặc định, đối số

['Hello', 'My', 'name', 'is', '"John"']
['Hello', 'My', 'name', 'is', '"Tom"']
25 được đặt thành
['Hello', 'My', 'name', 'is', '"John"']
['Hello', 'My', 'name', 'is', '"Tom"']
68. Nói cách khác, các trường sẽ chỉ được trích dẫn khi QuoteChar hoặc Delimiter xuất hiện trong dữ liệu.

Giả sử bạn muốn trích dẫn đôi xung quanh tất cả dữ liệu văn bản. Để đạt được điều này, đặt đối số

['Hello', 'My', 'name', 'is', '"John"']
['Hello', 'My', 'name', 'is', '"Tom"']
25 thành
['Hello', 'My', 'name', 'is', '"John"']
['Hello', 'My', 'name', 'is', '"Tom"']
70.

from io import StringIO

with open("test.csv", newline="") as f:
    file = StringIO(f.read().replace(" ,", ","))
    reader = csv.reader(file, delimiter=",", quotechar="|")
    for row in reader:
        print(row)
8

['Hello', 'My', 'name', 'is', 'John']
2

Đầu ra dự kiến:

customers.csv

['Hello', 'My', 'name', 'is', 'John']
3

Bây giờ tất cả các tên và địa chỉ có trích dẫn kép xung quanh chúng.

Nếu bạn muốn báo giá kép xung quanh tất cả các trường bất kể Quotechar hay Delimiter xuất hiện trong dữ liệu hay không, hãy đặt

['Hello', 'My', 'name', 'is', '"John"']
['Hello', 'My', 'name', 'is', '"Tom"']
25 thành
['Hello', 'My', 'name', 'is', '"John"']
['Hello', 'My', 'name', 'is', '"Tom"']
27.

from io import StringIO

with open("test.csv", newline="") as f:
    file = StringIO(f.read().replace(" ,", ","))
    reader = csv.reader(file, delimiter=",", quotechar="|")
    for row in reader:
        print(row)
8

['Hello', 'My', 'name', 'is', 'John']
5

Đầu ra dự kiến:

['Hello', 'My', 'name', 'is', 'John']
6

Bây giờ tất cả các tên và địa chỉ có trích dẫn kép xung quanh chúng.

Nếu bạn muốn báo giá kép xung quanh tất cả các trường bất kể Quotechar hay Delimiter xuất hiện trong dữ liệu hay không, hãy đặt

['Hello', 'My', 'name', 'is', '"John"']
['Hello', 'My', 'name', 'is', '"Tom"']
25 thành
['Hello', 'My', 'name', 'is', '"John"']
['Hello', 'My', 'name', 'is', '"Tom"']
27.

Mọi thứ đều được trích dẫn kép bây giờ.

from io import StringIO

with open("test.csv", newline="") as f:
    file = StringIO(f.read().replace(" ,", ","))
    reader = csv.reader(file, delimiter=",", quotechar="|")
    for row in reader:
        print(row)
8

['Hello', 'My', 'name', 'is', 'John']
8

Đầu ra dự kiến:

['Hello', 'My', 'name', 'is', 'John']
9

Bây giờ tất cả các tên và địa chỉ có trích dẫn kép xung quanh chúng.

Nếu bạn muốn báo giá kép xung quanh tất cả các trường bất kể Quotechar hay Delimiter xuất hiện trong dữ liệu hay không, hãy đặt

['Hello', 'My', 'name', 'is', '"John"']
['Hello', 'My', 'name', 'is', '"Tom"']
25 thành
['Hello', 'My', 'name', 'is', '"John"']
['Hello', 'My', 'name', 'is', '"Tom"']
27.

from io import StringIO

with open("test.csv", newline="") as f:
    file = StringIO(f.read().replace(" ,", ","))
    reader = csv.reader(file, delimiter=",", quotechar="|")
    for row in reader:
        print(row)
8

"ID","Name","CountryCode","District","Population"
"1","Kabul","AFG","Kabol","1780000"
"2","Qandahar","AFG","Qandahar","237500"
"3","Herat","AFG","Herat","186800"
"4","Mazar-e-Sharif","AFG","Balkh","127800"
"5","Amsterdam","NLD","Noord-Holland","731200"
1

Đầu ra dự kiến:

"ID","Name","CountryCode","District","Population"
"1","Kabul","AFG","Kabol","1780000"
"2","Qandahar","AFG","Qandahar","237500"
"3","Herat","AFG","Herat","186800"
"4","Mazar-e-Sharif","AFG","Balkh","127800"
"5","Amsterdam","NLD","Noord-Holland","731200"
2

Bây giờ tất cả các tên và địa chỉ có trích dẫn kép xung quanh chúng.

Nếu bạn muốn báo giá kép xung quanh tất cả các trường bất kể Quotechar hay Delimiter xuất hiện trong dữ liệu hay không, hãy đặt

['Hello', 'My', 'name', 'is', '"John"']
['Hello', 'My', 'name', 'is', '"Tom"']
25 thành
['Hello', 'My', 'name', 'is', '"John"']
['Hello', 'My', 'name', 'is', '"Tom"']
27.

Mọi thứ đều được trích dẫn kép bây giờ.

from io import StringIO

with open("test.csv", newline="") as f:
    file = StringIO(f.read().replace(" ,", ","))
    reader = csv.reader(file, delimiter=",", quotechar="|")
    for row in reader:
        print(row)
8

"ID","Name","CountryCode","District","Population"
"1","Kabul","AFG","Kabol","1780000"
"2","Qandahar","AFG","Qandahar","237500"
"3","Herat","AFG","Herat","186800"
"4","Mazar-e-Sharif","AFG","Balkh","127800"
"5","Amsterdam","NLD","Noord-Holland","731200"
4

Đầu ra dự kiến:

"ID","Name","CountryCode","District","Population"
"1","Kabul","AFG","Kabol","1780000"
"2","Qandahar","AFG","Qandahar","237500"
"3","Herat","AFG","Herat","186800"
"4","Mazar-e-Sharif","AFG","Balkh","127800"
"5","Amsterdam","NLD","Noord-Holland","731200"
5

Bây giờ tất cả các tên và địa chỉ có trích dẫn kép xung quanh chúng.

Nếu bạn muốn báo giá kép xung quanh tất cả các trường bất kể Quotechar hay Delimiter xuất hiện trong dữ liệu hay không, hãy đặt

['Hello', 'My', 'name', 'is', '"John"']
['Hello', 'My', 'name', 'is', '"Tom"']
25 thành
['Hello', 'My', 'name', 'is', '"John"']
['Hello', 'My', 'name', 'is', '"Tom"']
27.

Mọi thứ đều được trích dẫn kép bây giờ.


Điều quan trọng cần lưu ý là khi trích dẫn là trên (tức là tham số

['Hello', 'My', 'name', 'is', '"John"']
['Hello', 'My', 'name', 'is', '"Tom"']
25 có giá trị khác với
['Hello', 'My', 'name', 'is', '"John"']
['Hello', 'My', 'name', 'is', '"Tom"']
29), mô -đun
id,name,email,age,designation
1,John,,24,programmer
2,Bob,,34,designer
3,Mary,,43,sales
1 sử dụng
id,name,email,age,designation
1,John,,24,programmer
2,Bob,,34,designer
3,Mary,,43,sales
0 (mặc định là
id,name,email,age,designation
1,John,,24,programmer
2,Bob,,34,designer
3,Mary,,43,sales
3) để trích dẫn trường.

Danh sách sau đây thay đổi ký tự trích dẫn từ báo giá kép (

id,name,email,age,designation
1,John,,24,programmer
2,Bob,,34,designer
3,Mary,,43,sales
3) thành một trích dẫn duy nhất (
['Hello', 'My', 'name', 'is', '"John"']
['Hello', 'My', 'name', 'is', '"Tom"']
39).
:
['Hello', 'My', 'name', 'is', '"John"']
['Hello', 'My', 'name', 'is', '"Tom"']
97

Trong trường hợp này, mô -đun
id,name,email,age,designation
1,John,,24,programmer
2,Bob,,34,designer
3,Mary,,43,sales
1 sử dụng trích dẫn đơn (
['Hello', 'My', 'name', 'is', '"John"']
['Hello', 'My', 'name', 'is', '"Tom"']
39) thay vì (
id,name,email,age,designation
1,John,,24,programmer
2,Bob,,34,designer
3,Mary,,43,sales
3) để trích dẫn các trường có chứa quotechar hoặc delimiter.
Chúng tôi cũng có thể tắt trích dẫn tất cả cùng nhau bằng cách đặt
['Hello', 'My', 'name', 'is', '"John"']
['Hello', 'My', 'name', 'is', '"Tom"']
25 thành
['Hello', 'My', 'name', 'is', '"John"']
['Hello', 'My', 'name', 'is', '"Tom"']
29. Tuy nhiên, nếu bạn làm điều đó và ký tự Delimiter xuất hiện trong dữ liệu thì bạn sẽ gặp lỗi như thế này:
Vấn đề là trường địa chỉ chứa dấu phẩy nhúng (
['Hello', 'My', 'name', 'is', '"John"']
['Hello', 'My', 'name', 'is', '"Tom"']
18) và vì chúng tôi đã tắt khả năng trích dẫn các trường, mô -đun
id,name,email,age,designation
1,John,,24,programmer
2,Bob,,34,designer
3,Mary,,43,sales
1 không biết cách thoát chúng đúng.
Đây là nơi mà cuộc tranh luận
['Hello', 'My', 'name', 'is', '"John"']
['Hello', 'My', 'name', 'is', '"Tom"']
30 phát huy tác dụng. Phải mất một chuỗi một ký tự sẽ được sử dụng để thoát khỏi dấu phân cách khi trích dẫn được tắt (tức là
['Hello', 'My', 'name', 'is', '"John"']
['Hello', 'My', 'name', 'is', '"Tom"']
88).
Danh sách sau đây đặt
['Hello', 'My', 'name', 'is', '"John"']
['Hello', 'My', 'name', 'is', '"Tom"']
30 thành dấu gạch chéo ngược (
['Hello', 'My', 'name', 'is', '"John"']
['Hello', 'My', 'name', 'is', '"Tom"']
44).
Lưu ý rằng dấu phẩy (
['Hello', 'My', 'name', 'is', '"John"']
['Hello', 'My', 'name', 'is', '"Tom"']
18) trong trường địa chỉ được thoát ra bằng ký tự dấu gạch chéo ngược (
['Hello', 'My', 'name', 'is', '"John"']
['Hello', 'My', 'name', 'is', '"Tom"']
44).
Bây giờ bạn sẽ có một sự hiểu biết tốt về các đối số định dạng khác nhau và bối cảnh mà chúng được sử dụng với hàm
['Hello', 'My', 'name', 'is', '"John"']
['Hello', 'My', 'name', 'is', '"Tom"']
01 và
['Hello', 'My', 'name', 'is', '"John"']
['Hello', 'My', 'name', 'is', '"Tom"']
02. Trong phần tiếp theo sẽ thấy một số cách khác để đọc và ghi dữ liệu.
Đọc tệp CSV với DicTreader #
['Hello', 'My', 'name', 'is', '"John"']
['Hello', 'My', 'name', 'is', '"Tom"']
95 hoạt động gần như chính xác như
['Hello', 'My', 'name', 'is', '"John"']
['Hello', 'My', 'name', 'is', '"Tom"']
01 nhưng thay vì trả lại một dòng làm danh sách, nó trả về một từ điển. Cú pháp của nó như sau:
Cú pháp ::
['Hello', 'My', 'name', 'is', '"John"']
['Hello', 'My', 'name', 'is', '"Tom"']
97
Tranh luậnSự mô tả
['Hello', 'My', 'name', 'is', '"John"']
['Hello', 'My', 'name', 'is', '"Tom"']
09
(Yêu cầu) Nó đề cập đến đối tượng tệp.

['Hello', 'My', 'name', 'is', '"John"']
['Hello', 'My', 'name', 'is', '"Tom"']
99

(tùy chọn) Nó đề cập đến danh sách các khóa sẽ được sử dụng trong từ điển được trả lại theo thứ tự. Nếu bị bỏ qua, các tên trường được suy ra từ hàng đầu tiên của tệp CSV.:

customers.csv

"ID","Name","CountryCode","District","Population"
"1","Kabul","AFG","Kabol","1780000"
"2","Qandahar","AFG","Qandahar","237500"
"3","Herat","AFG","Herat","186800"
"4","Mazar-e-Sharif","AFG","Balkh","127800"
"5","Amsterdam","NLD","Noord-Holland","731200"
6

"ID","Name","CountryCode","District","Population"
"1","Kabul","AFG","Kabol","1780000"
"2","Qandahar","AFG","Qandahar","237500"
"3","Herat","AFG","Herat","186800"
"4","Mazar-e-Sharif","AFG","Balkh","127800"
"5","Amsterdam","NLD","Noord-Holland","731200"
7

Đầu ra dự kiến:

"ID","Name","CountryCode","District","Population"
"1","Kabul","AFG","Kabol","1780000"
"2","Qandahar","AFG","Qandahar","237500"
"3","Herat","AFG","Herat","186800"
"4","Mazar-e-Sharif","AFG","Balkh","127800"
"5","Amsterdam","NLD","Noord-Holland","731200"
8

Bây giờ tất cả các tên và địa chỉ có trích dẫn kép xung quanh chúng.

Nếu bạn muốn báo giá kép xung quanh tất cả các trường bất kể Quotechar hay Delimiter xuất hiện trong dữ liệu hay không, hãy đặt

['Hello', 'My', 'name', 'is', '"John"']
['Hello', 'My', 'name', 'is', '"Tom"']
25 thành
['Hello', 'My', 'name', 'is', '"John"']
['Hello', 'My', 'name', 'is', '"Tom"']
27.
: Using
['Hello', 'My', 'name', 'is', '"John"']
['Hello', 'My', 'name', 'is', '"Tom"']
99 parameter

"ID","Name","CountryCode","District","Population"
"1","Kabul","AFG","Kabol","1780000"
"2","Qandahar","AFG","Qandahar","237500"
"3","Herat","AFG","Herat","186800"
"4","Mazar-e-Sharif","AFG","Balkh","127800"
"5","Amsterdam","NLD","Noord-Holland","731200"
9

Mọi thứ đều được trích dẫn kép bây giờ.

Name,Age,Address
Jerry,10,"2776 McDowell Street, Nashville, Tennessee"
Tom,20,"3171 Jessie Street, Westerville, Ohio"
Mike,30,"1818 Sherman Street, Hope, Kansas"
0

Đầu ra dự kiến:

Name,Age,Address
Jerry,10,"2776 McDowell Street, Nashville, Tennessee"
Tom,20,"3171 Jessie Street, Westerville, Ohio"
Mike,30,"1818 Sherman Street, Hope, Kansas"
1

Bây giờ tất cả các tên và địa chỉ có trích dẫn kép xung quanh chúng.: Using

"Fruit","Quantity","Cost"
"Strawberry","1000","$2,200"
"Apple","500","$1,100"
00 parameter

"ID","Name","CountryCode","District","Population"
"1","Kabul","AFG","Kabol","1780000"
"2","Qandahar","AFG","Qandahar","237500"
"3","Herat","AFG","Herat","186800"
"4","Mazar-e-Sharif","AFG","Balkh","127800"
"5","Amsterdam","NLD","Noord-Holland","731200"
9

Name,Age,Address
Jerry,10,"2776 McDowell Street, Nashville, Tennessee"
Tom,20,"3171 Jessie Street, Westerville, Ohio"
Mike,30,"1818 Sherman Street, Hope, Kansas"
3

Đầu ra dự kiến:

Name,Age,Address
Jerry,10,"2776 McDowell Street, Nashville, Tennessee"
Tom,20,"3171 Jessie Street, Westerville, Ohio"
Mike,30,"1818 Sherman Street, Hope, Kansas"
4

Bây giờ tất cả các tên và địa chỉ có trích dẫn kép xung quanh chúng.

Nếu bạn muốn báo giá kép xung quanh tất cả các trường bất kể Quotechar hay Delimiter xuất hiện trong dữ liệu hay không, hãy đặt

['Hello', 'My', 'name', 'is', '"John"']
['Hello', 'My', 'name', 'is', '"Tom"']
25 thành
['Hello', 'My', 'name', 'is', '"John"']
['Hello', 'My', 'name', 'is', '"Tom"']
27.
: Using
"Fruit","Quantity","Cost"
"Strawberry","1000","$2,200"
"Apple","500","$1,100"
03

"ID","Name","CountryCode","District","Population"
"1","Kabul","AFG","Kabol","1780000"
"2","Qandahar","AFG","Qandahar","237500"
"3","Herat","AFG","Herat","186800"
"4","Mazar-e-Sharif","AFG","Balkh","127800"
"5","Amsterdam","NLD","Noord-Holland","731200"
9

Name,Age,Address
Jerry,10,"2776 McDowell Street, Nashville, Tennessee"
Tom,20,"3171 Jessie Street, Westerville, Ohio"
Mike,30,"1818 Sherman Street, Hope, Kansas"
6

Đầu ra dự kiến:

Name,Age,Address
Jerry,10,"2776 McDowell Street, Nashville, Tennessee"
Tom,20,"3171 Jessie Street, Westerville, Ohio"
Mike,30,"1818 Sherman Street, Hope, Kansas"
7

Bây giờ tất cả các tên và địa chỉ có trích dẫn kép xung quanh chúng.

Nếu bạn muốn báo giá kép xung quanh tất cả các trường bất kể Quotechar hay Delimiter xuất hiện trong dữ liệu hay không, hãy đặt ['Hello', 'My', 'name', 'is', '"John"'] ['Hello', 'My', 'name', 'is', '"Tom"'] 25 thành ['Hello', 'My', 'name', 'is', '"John"'] ['Hello', 'My', 'name', 'is', '"Tom"'] 27.


Mọi thứ đều được trích dẫn kép bây giờ.

Cú pháp:

"Fruit","Quantity","Cost"
"Strawberry","1000","$2,200"
"Apple","500","$1,100"
18
"Fruit","Quantity","Cost"
"Strawberry","1000","$2,200"
"Apple","500","$1,100"
18

Tranh luậnSự mô tả
['Hello', 'My', 'name', 'is', '"John"']
['Hello', 'My', 'name', 'is', '"Tom"']
09
Nó đề cập đến đối tượng tệp
['Hello', 'My', 'name', 'is', '"John"']
['Hello', 'My', 'name', 'is', '"Tom"']
99
Nó đề cập đến tên trường và thứ tự chúng sẽ được viết tệp.
"Fruit","Quantity","Cost"
"Strawberry","1000","$2,200"
"Apple","500","$1,100"
03
Nó cung cấp giá trị còn thiếu cho các khóa không tồn tại trong từ điển.
"Fruit","Quantity","Cost"
"Strawberry","1000","$2,200"
"Apple","500","$1,100"
22
Nó kiểm soát hành động nào sẽ thực hiện nếu từ điển chứa một khóa, điều đó không được tìm thấy trong đối số
['Hello', 'My', 'name', 'is', '"John"']
['Hello', 'My', 'name', 'is', '"Tom"']
99. Theo mặc định,
"Fruit","Quantity","Cost"
"Strawberry","1000","$2,200"
"Apple","500","$1,100"
22 được đặt thành
"Fruit","Quantity","Cost"
"Strawberry","1000","$2,200"
"Apple","500","$1,100"
25, điều đó có nghĩa là một ngoại lệ sẽ được nêu ra trong một sự kiện như vậy. Nếu bạn muốn bỏ qua các giá trị bổ sung được đặt
"Fruit","Quantity","Cost"
"Strawberry","1000","$2,200"
"Apple","500","$1,100"
22 thành
"Fruit","Quantity","Cost"
"Strawberry","1000","$2,200"
"Apple","500","$1,100"
27.

"Fruit","Quantity","Cost"
"Strawberry","1000","$2,200"
"Apple","500","$1,100"
17 cung cấp ba phương thức sau để ghi dữ liệu.

Phương phápSự mô tả
['Hello', 'My', 'name', 'is', '"John"']
['Hello', 'My', 'name', 'is', '"Tom"']
09
Nó đề cập đến đối tượng tệp
['Hello', 'My', 'name', 'is', '"John"']
['Hello', 'My', 'name', 'is', '"Tom"']
99
Nó đề cập đến tên trường và thứ tự chúng sẽ được viết tệp.
"Fruit","Quantity","Cost"
"Strawberry","1000","$2,200"
"Apple","500","$1,100"
03
Nó cung cấp giá trị còn thiếu cho các khóa không tồn tại trong từ điển.

"Fruit","Quantity","Cost"
"Strawberry","1000","$2,200"
"Apple","500","$1,100"
22

Nó kiểm soát hành động nào sẽ thực hiện nếu từ điển chứa một khóa, điều đó không được tìm thấy trong đối số

['Hello', 'My', 'name', 'is', '"John"']
['Hello', 'My', 'name', 'is', '"Tom"']
99. Theo mặc định,
"Fruit","Quantity","Cost"
"Strawberry","1000","$2,200"
"Apple","500","$1,100"
22 được đặt thành
"Fruit","Quantity","Cost"
"Strawberry","1000","$2,200"
"Apple","500","$1,100"
25, điều đó có nghĩa là một ngoại lệ sẽ được nêu ra trong một sự kiện như vậy. Nếu bạn muốn bỏ qua các giá trị bổ sung được đặt
"Fruit","Quantity","Cost"
"Strawberry","1000","$2,200"
"Apple","500","$1,100"
22 thành
"Fruit","Quantity","Cost"
"Strawberry","1000","$2,200"
"Apple","500","$1,100"
27.
:

Name,Age,Address
Jerry,10,"2776 McDowell Street, Nashville, Tennessee"
Tom,20,"3171 Jessie Street, Westerville, Ohio"
Mike,30,"1818 Sherman Street, Hope, Kansas"
8

Name,Age,Address
Jerry,10,"2776 McDowell Street, Nashville, Tennessee"
Tom,20,"3171 Jessie Street, Westerville, Ohio"
Mike,30,"1818 Sherman Street, Hope, Kansas"
9

"Fruit","Quantity","Cost"
"Strawberry","1000","$2,200"
"Apple","500","$1,100"
17 cung cấp ba phương thức sau để ghi dữ liệu.

dictcustomers.csv

['Hello', 'My', 'name', 'is', 'John']
0

Phương pháp: Using

"Fruit","Quantity","Cost"
"Strawberry","1000","$2,200"
"Apple","500","$1,100"
03

Name,Age,Address
Jerry,10,"2776 McDowell Street, Nashville, Tennessee"
Tom,20,"3171 Jessie Street, Westerville, Ohio"
Mike,30,"1818 Sherman Street, Hope, Kansas"
8

Id,User,Comment
1,Bob,"John said ""Hello World"""
2,Tom,""The Magician""
2

"Fruit","Quantity","Cost"
"Strawberry","1000","$2,200"
"Apple","500","$1,100"
17 cung cấp ba phương thức sau để ghi dữ liệu.

dictcustomers.csv

Id,User,Comment
1,Bob,"John said ""Hello World"""
2,Tom,""The Magician""
3

Phương pháp

"Fruit","Quantity","Cost"
"Strawberry","1000","$2,200"
"Apple","500","$1,100"
29: Using
"Fruit","Quantity","Cost"
"Strawberry","1000","$2,200"
"Apple","500","$1,100"
22

Id,User,Comment
1,Bob,"John said ""Hello World"""
2,Tom,""The Magician""
4

Id,User,Comment
1,Bob,"John said ""Hello World"""
2,Tom,""The Magician""
5

Viết tiêu đề (tức là

['Hello', 'My', 'name', 'is', '"John"']
['Hello', 'My', 'name', 'is', '"Tom"']
99) vào tệp CSV và trả về
['Hello', 'My', 'name', 'is', '"John"']
['Hello', 'My', 'name', 'is', '"Tom"']
32.

"Fruit","Quantity","Cost"
"Strawberry","1000","$2,200"
"Apple","500","$1,100"
17 cung cấp ba phương thức sau để ghi dữ liệu.

dictcustomers.csv

Id,User,Comment
1,Bob,"John said ""Hello World"""
2,Tom,""The Magician""
6

Phương pháp


"Fruit","Quantity","Cost"
"Strawberry","1000","$2,200"
"Apple","500","$1,100"
29

Viết tiêu đề (tức là

['Hello', 'My', 'name', 'is', '"John"']
['Hello', 'My', 'name', 'is', '"Tom"']
99) vào tệp CSV và trả về
['Hello', 'My', 'name', 'is', '"John"']
['Hello', 'My', 'name', 'is', '"Tom"']
32.

['Hello', 'My', 'name', 'is', '"John"']
['Hello', 'My', 'name', 'is', '"Tom"']
60

Viết một hàng dữ liệu duy nhất và trả về số lượng ký tự được viết.

['Hello', 'My', 'name', 'is', '"John"']
['Hello', 'My', 'name', 'is', '"Tom"']
61 phải là một chuỗi các chuỗi và số.

['Hello', 'My', 'name', 'is', '"John"']
['Hello', 'My', 'name', 'is', '"Tom"']
62

Tranh luậnViết nhiều hàng dữ liệu và trả về
['Hello', 'My', 'name', 'is', '"John"']
['Hello', 'My', 'name', 'is', '"Tom"']
32.
['Hello', 'My', 'name', 'is', '"John"']
['Hello', 'My', 'name', 'is', '"Tom"']
64 phải là một chuỗi.
Sự mô tả
Hãy lấy một số ví dụ:Ví dụ 1:Đầu ra dự kiến:
Ví dụ 2: Sử dụng
"Fruit","Quantity","Cost"
"Strawberry","1000","$2,200"
"Apple","500","$1,100"
03
Trong trường hợp này, giá trị của trường
"Fruit","Quantity","Cost"
"Strawberry","1000","$2,200"
"Apple","500","$1,100"
15 bị thiếu trong các từ điển. Kết quả là S, giá trị của
"Fruit","Quantity","Cost"
"Strawberry","1000","$2,200"
"Apple","500","$1,100"
03 sẽ được sử dụng cho trường
"Fruit","Quantity","Cost"
"Strawberry","1000","$2,200"
"Apple","500","$1,100"
15.
Ví dụ 3: Sử dụng
"Fruit","Quantity","Cost"
"Strawberry","1000","$2,200"
"Apple","500","$1,100"
22
Ở đây, từ điển chứa một khóa phụ có tên
"Fruit","Quantity","Cost"
"Strawberry","1000","$2,200"
"Apple","500","$1,100"
42 không có trong danh sách
"Fruit","Quantity","Cost"
"Strawberry","1000","$2,200"
"Apple","500","$1,100"
43. Để ngăn chặn ngoại lệ được nâng lên, chúng tôi đã đặt
"Fruit","Quantity","Cost"
"Strawberry","1000","$2,200"
"Apple","500","$1,100"
22 thành
"Fruit","Quantity","Cost"
"Strawberry","1000","$2,200"
"Apple","500","$1,100"
27.
Tạo phương ngữ #Trước đó trong bài đăng này, chúng tôi đã học các tham số định dạng khác nhau cho phép chúng tôi tùy chỉnh đối tượng người đọc và người viết để phù hợp với sự khác biệt trong các quy ước CSV.
Nếu bạn thấy mình vượt qua cùng một tập hợp các tham số định dạng nhiều lần. Xem xét việc tạo phương ngữ của riêng bạn.Một đối tượng phương ngữ hoặc (chỉ đơn giản là phương ngữ) là một cách để nhóm các tham số định dạng khác nhau. Khi bạn đã tạo đối tượng phương ngữ, chỉ cần chuyển nó cho người đọc hoặc người viết, thay vì truyền riêng từng đối số định dạng.Để tạo một phương ngữ mới, chúng tôi sử dụng hàm
"Fruit","Quantity","Cost"
"Strawberry","1000","$2,200"
"Apple","500","$1,100"
46. Nó chấp nhận tên phương ngữ dưới dạng chuỗi và một hoặc nhiều tham số định dạng làm đối số từ khóa.
Bảng sau liệt kê tất cả các đối số định dạng cùng với các giá trị mặc định của chúng:Mặc định
import csv

with open('employees.csv', 'rt') as f:
    csv_reader = csv.reader(f)

    for line in csv_reader:
        print(line)
0
['Hello', 'My', 'name', 'is', '"John"']
['Hello', 'My', 'name', 'is', '"Tom"']
18
Nó đề cập đến ký tự được sử dụng để tách các giá trị (hoặc trường) trong tệp CSV.
['Hello', 'My', 'name', 'is', '"John"']
['Hello', 'My', 'name', 'is', '"Tom"']
19
['Hello', 'My', 'name', 'is', '"John"']
['Hello', 'My', 'name', 'is', '"Tom"']
20
Nó kiểm soát cách không gian theo dấu phân cách sẽ được giải thích. Nếu
['Hello', 'My', 'name', 'is', '"John"']
['Hello', 'My', 'name', 'is', '"Tom"']
34, khoảng trắng ban đầu sẽ bị loại bỏ.
['Hello', 'My', 'name', 'is', '"John"']
['Hello', 'My', 'name', 'is', '"Tom"']
21

['Hello', 'My', 'name', 'is', '"John"']
['Hello', 'My', 'name', 'is', '"Tom"']
22

Id,User,Comment
1,Bob,"John said ""Hello World"""
2,Tom,""The Magician""
7

Id,User,Comment
1,Bob,"John said ""Hello World"""
2,Tom,""The Magician""
8

"Fruit","Quantity","Cost"
"Strawberry","1000","$2,200"
"Apple","500","$1,100"
17 cung cấp ba phương thức sau để ghi dữ liệu.

oscars.csv

Id,User,Comment
1,Bob,"John said ""Hello World"""
2,Tom,""The Magician""
9


Phương pháp

"Fruit","Quantity","Cost"
"Strawberry","1000","$2,200"
"Apple","500","$1,100"
29


Escapechar trong nhà văn CSV là gì?

Một chuỗi một vật nhân được người viết sử dụng để thoát khỏi dấu phân cách nếu trích dẫn được đặt thành quote_none và quotechar nếu doublequote là sai. Khi đọc, Escapechar loại bỏ bất kỳ ý nghĩa đặc biệt nào khỏi nhân vật sau. and the quotechar if doublequote is False . On reading, the escapechar removes any special meaning from the following character.

Trích dẫn csv quote_none là gì?

CSV.QUOTE_MINIMAL - Chỉ định đối tượng của người viết chỉ trích dẫn các trường có chứa các ký tự đặc biệt (Delimiter, Quotechar hoặc bất kỳ ký tự nào trong lineterminator) CSV.QUOTE_NONE - Chỉ định đối tượng của người viết rằng không có mục nào trong số các mục được trích dẫn.Nó là giá trị mặc định.Specifies the writer object that none of the entries should be quoted. It is the default value.

Trích dẫn CSV là gì?

Dấu trích dẫn xuất hiện trong các tệp CSV dưới dạng vòng loại văn bản.Điều này có nghĩa là, chúng có chức năng kết thúc văn bản nên được giữ như một giá trị, so với những giá trị riêng biệt nên được tách ra.they function to wrap together text that should be kept as one value, versus what are distinct values that should be separated out.

Phương ngữ trong Python là gì?

Phương ngữ.Lớp phương ngữ là một lớp container dựa trên chủ yếu cho các thuộc tính của nó, được sử dụng để xác định các tham số cho một phiên bản trình đọc hoặc nhà văn cụ thể.Lớp CSV.Excel.Lớp Excel xác định các thuộc tính thông thường của tệp CSV do Excel tạo.a container class relied on primarily for its attributes, which are used to define the parameters for a specific reader or writer instance. class csv. excel. The excel class defines the usual properties of an Excel-generated CSV file.