Đố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à '"'.
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,
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']
Nhà
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 (
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à
Jerry
2776 McDowell Street, Nashville, Tennessee
Tom
3171 Jessie Street, Westerville, Ohio
Mike
1818 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:
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ụ:
________ 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à
________ 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à
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
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:
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)
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)
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 (
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 (
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)
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ố
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
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
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
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)
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)
(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.:
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.
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.
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.