Hướng dẫn how do you open a comma separated text file in python? - làm cách nào để bạn mở tệp văn bản được phân tách bằng dấu phẩy trong python?

Bạn có ý tưởng đúng, hãy bắt đầu bằng cách mở một số tệp:

Show
with open("text.txt", "r") as filestream:
    with open("answers.txt", "w") as filestreamtwo:

Ở đây, chúng tôi đã mở hai fileStreams - "text.txt" và "answer.txt".

Vì chúng tôi đã sử dụng

total = str(int(currentline[0]) + int(currentline[1]) + int(currentline [2])) + "\n"
1, các filestream này sẽ tự động đóng sau khi mã được thụt vào bên dưới chúng hoàn thành chạy.

Bây giờ, chúng ta hãy chạy qua tệp "Text.txt" từng dòng:

for line in filestream:

Điều này sẽ chạy một vòng lặp và kết thúc ở cuối tệp.

Tiếp theo, chúng ta cần thay đổi văn bản đầu vào thành một cái gì đó chúng ta có thể làm việc, chẳng hạn như một mảng:

currentline = line.split(",")

Bây giờ,

total = str(int(currentline[0]) + int(currentline[1]) + int(currentline [2])) + "\n"
2 chứa tất cả các số nguyên được liệt kê trong dòng đầu tiên của "text.txt".

Hãy tổng hợp các số nguyên sau:

total = str(int(currentline[0]) + int(currentline[1]) + int(currentline [2])) + "\n"

Chúng tôi đã phải bọc từng phần tử trong

total = str(int(currentline[0]) + int(currentline[1]) + int(currentline [2])) + "\n"
2 với hàm
total = str(int(currentline[0]) + int(currentline[1]) + int(currentline [2])) + "\n"
4 xung quanh. Nếu không, thay vì thêm các số nguyên, chúng ta sẽ kết nối các chuỗi!

Sau đó, chúng tôi thêm trở lại vận chuyển,

total = str(int(currentline[0]) + int(currentline[1]) + int(currentline [2])) + "\n"
5 để làm cho "câu trả lời.txt" rõ ràng hơn để hiểu.

filestreamtwo.write(total)

Bây giờ, chúng tôi đang viết vào tệp "Trả lời.txt" ... Đó là nó! Bạn đã hoàn tất!

Đây là mã một lần nữa:

with open("test.txt", "r") as filestream:
    with open("answers.txt", "w") as filestreamtwo:
        for line in filestream:
            currentline = line.split(",")
            total = str(int(currentline[0]) + int(currentline[1]) + int(currentline [2])) + "\n"
            filestreamtwo.write(total)

Xem bây giờ hướng dẫn này có một khóa học video liên quan được tạo bởi nhóm Python thực sự. Xem cùng với hướng dẫn bằng văn bản để hiểu sâu hơn về sự hiểu biết của bạn: Đọc và viết các tệp CSV This tutorial has a related video course created by the Real Python team. Watch it together with the written tutorial to deepen your understanding: Reading and Writing CSV Files

Chức năng nào được sử dụng để đọc tệp giá trị phân tách bằng dấu phẩy trong Python?

Đọc từ tệp CSV được thực hiện bằng cách sử dụng đối tượng đầu đọc. Tệp CSV được mở dưới dạng tệp văn bản với hàm Open in () tích hợp của Python, trả về một đối tượng tệp.

Làm thế nào mở một tập tin trong Python và chia nó?

Tách tệp văn bản với phương thức Split () Sau khi sử dụng Python với câu lệnh để mở tệp dữ liệu, chúng ta có thể lặp qua nội dung của tệp với một vòng lặp. Khi dữ liệu được đọc, phương thức chia () được sử dụng để tách văn bản thành các từ.

Hãy để đối mặt với nó: Bạn cần phải có được thông tin vào và ra khỏi các chương trình của mình thông qua nhiều hơn chỉ là bàn phím và bảng điều khiển. Trao đổi thông tin thông qua các tệp văn bản là một cách phổ biến để chia sẻ thông tin giữa các chương trình. Một trong những định dạng phổ biến nhất để trao đổi dữ liệu là định dạng CSV. Nhưng làm thế nào để bạn sử dụng nó?

Hãy để một điều rõ ràng: bạn không phải (và bạn đã thắng) xây dựng trình phân tích cú pháp CSV của riêng bạn từ đầu. Có một số thư viện hoàn toàn chấp nhận được bạn có thể sử dụng. Thư viện Python

total = str(int(currentline[0]) + int(currentline[1]) + int(currentline [2])) + "\n"
6 sẽ hoạt động cho hầu hết các trường hợp. Nếu công việc của bạn yêu cầu nhiều dữ liệu hoặc phân tích số, thư viện
total = str(int(currentline[0]) + int(currentline[1]) + int(currentline [2])) + "\n"
7 cũng có khả năng phân tích cú pháp CSV, nên xử lý phần còn lại.

Trong bài viết này, bạn sẽ học cách đọc, xử lý và phân tích CSV từ các tệp văn bản bằng Python. Bạn sẽ thấy cách thức hoạt động của các tệp CSV, tìm hiểu thư viện

total = str(int(currentline[0]) + int(currentline[1]) + int(currentline [2])) + "\n"
6 quan trọng được tích hợp vào Python và xem cách phân tích cú pháp CSV hoạt động bằng thư viện
total = str(int(currentline[0]) + int(currentline[1]) + int(currentline [2])) + "\n"
7.

column 1 name,column 2 name, column 3 name
first row data 1,first row data 2,first row data 3
second row data 1,second row data 2,second row data 3
...

Vậy hãy bắt đầu!

Tệp CSV là gì?

Tệp CSV (tệp giá trị phân tách bằng dấu phẩy) là một loại tệp văn bản thuần túy sử dụng cấu trúc cụ thể để sắp xếp dữ liệu bảng. Bởi vì nó là một tệp văn bản đơn giản, nó chỉ có thể chứa dữ liệu văn bản thực tế nói cách khác, có thể in các ký tự ASCII hoặc Unicode.

Cấu trúc của một tệp CSV được đưa ra bằng tên của nó. Thông thường, các tệp CSV sử dụng dấu phẩy để phân tách từng giá trị dữ liệu cụ thể. Ở đây, cấu trúc đó trông như thế nào:

Lưu ý cách mỗi phần dữ liệu được phân tách bằng dấu phẩy. Thông thường, dòng đầu tiên xác định từng phần dữ liệu, nói cách khác, tên của một cột dữ liệu. Mỗi dòng tiếp theo sau đó là dữ liệu thực tế và chỉ bị giới hạn bởi các ràng buộc kích thước tệp.

Phân tích các tệp CSV với thư viện CSV tích hợp Python

Thư viện

total = str(int(currentline[0]) + int(currentline[1]) + int(currentline [2])) + "\n"
6 cung cấp chức năng cho cả đọc và ghi vào các tệp CSV. Được thiết kế để hoạt động ngoài hộp với các tệp CSV do Excel tạo, nó dễ dàng điều chỉnh để hoạt động với nhiều định dạng CSV khác nhau. Thư viện
total = str(int(currentline[0]) + int(currentline[1]) + int(currentline [2])) + "\n"
6 chứa các đối tượng và mã khác để đọc, ghi và xử lý dữ liệu từ và đến các tệp CSV.

Đọc các tệp CSV với total = str(int(currentline[0]) + int(currentline[1]) + int(currentline [2])) + "\n" 6

Đọc từ tệp CSV được thực hiện bằng đối tượng

filestreamtwo.write(total)
6. Tệp CSV được mở dưới dạng tệp văn bản với chức năng
filestreamtwo.write(total)
7 tích hợp của Python, trả về một đối tượng tệp. Điều này sau đó được chuyển cho
filestreamtwo.write(total)
6, nơi thực hiện công việc nặng nhọc.

Tại đây, tệp

filestreamtwo.write(total)
9:

name,department,birthday month
John Smith,Accounting,November
Erica Meyers,IT,March

Đây là mã để đọc nó:

import csv

with open('employee_birthday.txt') as csv_file:
    csv_reader = csv.reader(csv_file, delimiter=',')
    line_count = 0
    for row in csv_reader:
        if line_count == 0:
            print(f'Column names are {", ".join(row)}')
            line_count += 1
        else:
            print(f'\t{row[0]} works in the {row[1]} department, and was born in {row[2]}.')
            line_count += 1
    print(f'Processed {line_count} lines.')

Điều này dẫn đến đầu ra sau:

Column names are name, department, birthday month
    John Smith works in the Accounting department, and was born in November.
    Erica Meyers works in the IT department, and was born in March.
Processed 3 lines.

Mỗi hàng được trả về bởi

filestreamtwo.write(total)
6 là danh sách các phần tử
with open("test.txt", "r") as filestream:
    with open("answers.txt", "w") as filestreamtwo:
        for line in filestream:
            currentline = line.split(",")
            total = str(int(currentline[0]) + int(currentline[1]) + int(currentline [2])) + "\n"
            filestreamtwo.write(total)
1 chứa dữ liệu được tìm thấy bằng cách loại bỏ các dấu phân cách. Hàng đầu tiên được trả về chứa các tên cột, được xử lý theo một cách đặc biệt.

Đọc các tệp CSV thành một từ điển với total = str(int(currentline[0]) + int(currentline[1]) + int(currentline [2])) + "\n" 6

Thay vì xử lý một danh sách các yếu tố

with open("test.txt", "r") as filestream:
    with open("answers.txt", "w") as filestreamtwo:
        for line in filestream:
            currentline = line.split(",")
            total = str(int(currentline[0]) + int(currentline[1]) + int(currentline [2])) + "\n"
            filestreamtwo.write(total)
1 riêng lẻ, bạn có thể đọc dữ liệu CSV trực tiếp vào một từ điển (về mặt kỹ thuật, từ điển được đặt hàng).

Một lần nữa, tệp đầu vào của chúng tôi,

filestreamtwo.write(total)
9 như sau:

name,department,birthday month
John Smith,Accounting,November
Erica Meyers,IT,March

Tại đây, mã để đọc nó như một từ điển lần này:

for line in filestream:
1

Điều này dẫn đến cùng một đầu ra như trước:

Column names are name, department, birthday month
    John Smith works in the Accounting department, and was born in November.
    Erica Meyers works in the IT department, and was born in March.
Processed 3 lines.

Các phím từ điển đến từ đâu? Dòng đầu tiên của tệp CSV được giả sử chứa các khóa để sử dụng để xây dựng từ điển. Nếu bạn không có những thứ này trong tệp CSV của mình, bạn nên chỉ định các khóa của riêng mình bằng cách đặt tham số tùy chọn

with open("test.txt", "r") as filestream:
    with open("answers.txt", "w") as filestreamtwo:
        for line in filestream:
            currentline = line.split(",")
            total = str(int(currentline[0]) + int(currentline[1]) + int(currentline [2])) + "\n"
            filestreamtwo.write(total)
5 vào danh sách chứa chúng.

Tùy chọn Python CSV filestreamtwo.write(total) 6 tham số

Đối tượng

filestreamtwo.write(total)
6 có thể xử lý các kiểu khác nhau của các tệp CSV bằng cách chỉ định các tham số bổ sung, một số trong đó được hiển thị bên dưới:

  • with open("test.txt", "r") as filestream:
        with open("answers.txt", "w") as filestreamtwo:
            for line in filestream:
                currentline = line.split(",")
                total = str(int(currentline[0]) + int(currentline[1]) + int(currentline [2])) + "\n"
                filestreamtwo.write(total)
    
    8 Chỉ định ký tự được sử dụng để tách từng trường. Mặc định là dấu phẩy (
    with open("test.txt", "r") as filestream:
        with open("answers.txt", "w") as filestreamtwo:
            for line in filestream:
                currentline = line.split(",")
                total = str(int(currentline[0]) + int(currentline[1]) + int(currentline [2])) + "\n"
                filestreamtwo.write(total)
    
    9).

  • column 1 name,column 2 name, column 3 name
    first row data 1,first row data 2,first row data 3
    second row data 1,second row data 2,second row data 3
    ...
    
    0 Chỉ định ký tự được sử dụng để bao quanh các trường chứa ký tự phân cách. Mặc định là một báo giá kép (
    column 1 name,column 2 name, column 3 name
    first row data 1,first row data 2,first row data 3
    second row data 1,second row data 2,second row data 3
    ...
    
    1).

  • column 1 name,column 2 name, column 3 name
    first row data 1,first row data 2,first row data 3
    second row data 1,second row data 2,second row data 3
    ...
    
    2 Chỉ định ký tự được sử dụng để thoát khỏi ký tự phân cách, trong trường hợp trích dẫn aren được sử dụng. Mặc định là không có ký tự thoát.

Những thông số này xứng đáng được giải thích thêm. Giả sử bạn làm việc với tệp

column 1 name,column 2 name, column 3 name
first row data 1,first row data 2,first row data 3
second row data 1,second row data 2,second row data 3
...
3 sau:

for line in filestream:
3

Tệp CSV này chứa ba trường:

column 1 name,column 2 name, column 3 name
first row data 1,first row data 2,first row data 3
second row data 1,second row data 2,second row data 3
...
4,
column 1 name,column 2 name, column 3 name
first row data 1,first row data 2,first row data 3
second row data 1,second row data 2,second row data 3
...
5 và
column 1 name,column 2 name, column 3 name
first row data 1,first row data 2,first row data 3
second row data 1,second row data 2,second row data 3
...
6, được phân định bởi dấu phẩy. Vấn đề là dữ liệu cho trường
column 1 name,column 2 name, column 3 name
first row data 1,first row data 2,first row data 3
second row data 1,second row data 2,second row data 3
...
5 cũng chứa dấu phẩy để biểu thị mã zip.

Có ba cách khác nhau để xử lý tình huống này:

  • Sử dụng một dấu phân cách khác theo cách đó, dấu phẩy có thể được sử dụng một cách an toàn trong chính dữ liệu. Bạn sử dụng tham số tùy chọn

    with open("test.txt", "r") as filestream:
        with open("answers.txt", "w") as filestreamtwo:
            for line in filestream:
                currentline = line.split(",")
                total = str(int(currentline[0]) + int(currentline[1]) + int(currentline [2])) + "\n"
                filestreamtwo.write(total)
    
    8 để chỉ định trình phân cách mới.
    That way, the comma can safely be used in the data itself. You use the
    with open("test.txt", "r") as filestream:
        with open("answers.txt", "w") as filestreamtwo:
            for line in filestream:
                currentline = line.split(",")
                total = str(int(currentline[0]) + int(currentline[1]) + int(currentline [2])) + "\n"
                filestreamtwo.write(total)
    
    8 optional parameter to specify the new delimiter.

  • Bao bọc dữ liệu trong trích dẫn Bản chất đặc biệt của Delimiter đã chọn của bạn bị bỏ qua trong các chuỗi được trích dẫn. Do đó, bạn có thể chỉ định ký tự được sử dụng để trích dẫn với tham số tùy chọn

    column 1 name,column 2 name, column 3 name
    first row data 1,first row data 2,first row data 3
    second row data 1,second row data 2,second row data 3
    ...
    
    0. Miễn là nhân vật đó cũng không xuất hiện trong dữ liệu, bạn sẽ ổn.
    The special nature of your chosen delimiter is ignored in quoted strings. Therefore, you can specify the character used for quoting with the
    column 1 name,column 2 name, column 3 name
    first row data 1,first row data 2,first row data 3
    second row data 1,second row data 2,second row data 3
    ...
    
    0 optional parameter. As long as that character also doesn’t appear in the data, you’re fine.

  • Thoát khỏi các ký tự phân cách trong các ký tự thoát dữ liệu hoạt động giống như chúng trong các chuỗi định dạng, vô hiệu hóa việc giải thích nhân vật bị thoát ra (trong trường hợp này là dấu phân cách). Nếu một ký tự thoát được sử dụng, nó phải được chỉ định bằng tham số tùy chọn

    column 1 name,column 2 name, column 3 name
    first row data 1,first row data 2,first row data 3
    second row data 1,second row data 2,second row data 3
    ...
    
    2.
    Escape characters work just as they do in format strings, nullifying the interpretation of the character being escaped (in this case, the delimiter). If an escape character is used, it must be specified using the
    column 1 name,column 2 name, column 3 name
    first row data 1,first row data 2,first row data 3
    second row data 1,second row data 2,second row data 3
    ...
    
    2 optional parameter.

Viết các tệp CSV bằng total = str(int(currentline[0]) + int(currentline[1]) + int(currentline [2])) + "\n" 6

Bạn cũng có thể ghi vào tệp CSV bằng đối tượng

name,department,birthday month
John Smith,Accounting,November
Erica Meyers,IT,March
2 và phương thức
name,department,birthday month
John Smith,Accounting,November
Erica Meyers,IT,March
3:

for line in filestream:
4

Tham số tùy chọn

column 1 name,column 2 name, column 3 name
first row data 1,first row data 2,first row data 3
second row data 1,second row data 2,second row data 3
...
0 cho biết
name,department,birthday month
John Smith,Accounting,November
Erica Meyers,IT,March
2 nhân vật nào sẽ sử dụng để trích dẫn các trường khi viết. Tuy nhiên, việc trích dẫn có được sử dụng hay không được xác định bởi tham số tùy chọn
name,department,birthday month
John Smith,Accounting,November
Erica Meyers,IT,March
6:

  • Nếu
    name,department,birthday month
    John Smith,Accounting,November
    Erica Meyers,IT,March
    
    6 được đặt thành
    name,department,birthday month
    John Smith,Accounting,November
    Erica Meyers,IT,March
    
    8, thì
    name,department,birthday month
    John Smith,Accounting,November
    Erica Meyers,IT,March
    
    9 sẽ chỉ trích dẫn các trường nếu chúng chứa
    with open("test.txt", "r") as filestream:
        with open("answers.txt", "w") as filestreamtwo:
            for line in filestream:
                currentline = line.split(",")
                total = str(int(currentline[0]) + int(currentline[1]) + int(currentline [2])) + "\n"
                filestreamtwo.write(total)
    
    8 hoặc
    column 1 name,column 2 name, column 3 name
    first row data 1,first row data 2,first row data 3
    second row data 1,second row data 2,second row data 3
    ...
    
    0. Đây là trường hợp mặc định.
  • Nếu
    name,department,birthday month
    John Smith,Accounting,November
    Erica Meyers,IT,March
    
    6 được đặt thành
    import csv
    
    with open('employee_birthday.txt') as csv_file:
        csv_reader = csv.reader(csv_file, delimiter=',')
        line_count = 0
        for row in csv_reader:
            if line_count == 0:
                print(f'Column names are {", ".join(row)}')
                line_count += 1
            else:
                print(f'\t{row[0]} works in the {row[1]} department, and was born in {row[2]}.')
                line_count += 1
        print(f'Processed {line_count} lines.')
    
    3, thì
    name,department,birthday month
    John Smith,Accounting,November
    Erica Meyers,IT,March
    
    9 sẽ báo giá tất cả các trường.
  • Nếu
    name,department,birthday month
    John Smith,Accounting,November
    Erica Meyers,IT,March
    
    6 được đặt thành
    import csv
    
    with open('employee_birthday.txt') as csv_file:
        csv_reader = csv.reader(csv_file, delimiter=',')
        line_count = 0
        for row in csv_reader:
            if line_count == 0:
                print(f'Column names are {", ".join(row)}')
                line_count += 1
            else:
                print(f'\t{row[0]} works in the {row[1]} department, and was born in {row[2]}.')
                line_count += 1
        print(f'Processed {line_count} lines.')
    
    6, thì
    name,department,birthday month
    John Smith,Accounting,November
    Erica Meyers,IT,March
    
    9 sẽ trích dẫn tất cả các trường chứa dữ liệu văn bản và chuyển đổi tất cả các trường số thành loại dữ liệu
    import csv
    
    with open('employee_birthday.txt') as csv_file:
        csv_reader = csv.reader(csv_file, delimiter=',')
        line_count = 0
        for row in csv_reader:
            if line_count == 0:
                print(f'Column names are {", ".join(row)}')
                line_count += 1
            else:
                print(f'\t{row[0]} works in the {row[1]} department, and was born in {row[2]}.')
                line_count += 1
        print(f'Processed {line_count} lines.')
    
    8.
  • Nếu
    name,department,birthday month
    John Smith,Accounting,November
    Erica Meyers,IT,March
    
    6 được đặt thành
    Column names are name, department, birthday month
        John Smith works in the Accounting department, and was born in November.
        Erica Meyers works in the IT department, and was born in March.
    Processed 3 lines.
    
    0, thì
    name,department,birthday month
    John Smith,Accounting,November
    Erica Meyers,IT,March
    
    9 sẽ thoát khỏi các dấu phân cách thay vì trích dẫn chúng. Trong trường hợp này, bạn cũng phải cung cấp một giá trị cho tham số tùy chọn
    column 1 name,column 2 name, column 3 name
    first row data 1,first row data 2,first row data 3
    second row data 1,second row data 2,second row data 3
    ...
    
    2.

Đọc lại tệp trong văn bản đơn giản cho thấy tệp được tạo như sau:

for line in filestream:
5

Viết tệp CSV từ một từ điển với total = str(int(currentline[0]) + int(currentline[1]) + int(currentline [2])) + "\n" 6

Vì bạn có thể đọc dữ liệu của chúng tôi vào một từ điển, nên chỉ công bằng rằng bạn cũng có thể viết nó từ một từ điển:

for line in filestream:
6

Không giống như

Column names are name, department, birthday month
    John Smith works in the Accounting department, and was born in November.
    Erica Meyers works in the IT department, and was born in March.
Processed 3 lines.
4, tham số
with open("test.txt", "r") as filestream:
    with open("answers.txt", "w") as filestreamtwo:
        for line in filestream:
            currentline = line.split(",")
            total = str(int(currentline[0]) + int(currentline[1]) + int(currentline [2])) + "\n"
            filestreamtwo.write(total)
5 là bắt buộc khi viết từ điển. Điều này có ý nghĩa, khi bạn nghĩ về nó: Không có danh sách
with open("test.txt", "r") as filestream:
    with open("answers.txt", "w") as filestreamtwo:
        for line in filestream:
            currentline = line.split(",")
            total = str(int(currentline[0]) + int(currentline[1]) + int(currentline [2])) + "\n"
            filestreamtwo.write(total)
5,
Column names are name, department, birthday month
    John Smith works in the Accounting department, and was born in November.
    Erica Meyers works in the IT department, and was born in March.
Processed 3 lines.
7 có thể biết các khóa nào sẽ sử dụng để lấy các giá trị từ từ điển của bạn. Nó cũng sử dụng các phím trong
with open("test.txt", "r") as filestream:
    with open("answers.txt", "w") as filestreamtwo:
        for line in filestream:
            currentline = line.split(",")
            total = str(int(currentline[0]) + int(currentline[1]) + int(currentline [2])) + "\n"
            filestreamtwo.write(total)
5 để viết ra hàng đầu tiên dưới dạng tên cột.

Mã trên tạo tệp đầu ra sau:

for line in filestream:
7

Phân tích các tệp CSV với thư viện total = str(int(currentline[0]) + int(currentline[1]) + int(currentline [2])) + "\n" 7

Tất nhiên, thư viện Python CSV không phải là trò chơi duy nhất trong thị trấn. Đọc các tệp CSV cũng có thể trong

total = str(int(currentline[0]) + int(currentline[1]) + int(currentline [2])) + "\n"
7. Rất khuyến khích nếu bạn có nhiều dữ liệu để phân tích.

total = str(int(currentline[0]) + int(currentline[1]) + int(currentline [2])) + "\n"
7 là một thư viện Python nguồn mở cung cấp các công cụ phân tích dữ liệu hiệu suất cao và dễ sử dụng các cấu trúc dữ liệu.
total = str(int(currentline[0]) + int(currentline[1]) + int(currentline [2])) + "\n"
7 có sẵn cho tất cả các cài đặt Python, nhưng đây là một phần quan trọng của phân phối Anaconda và hoạt động rất tốt trong các máy tính xách tay Jupyter để chia sẻ dữ liệu, mã, kết quả phân tích, trực quan hóa và văn bản tường thuật.

Cài đặt

total = str(int(currentline[0]) + int(currentline[1]) + int(currentline [2])) + "\n"
7 và các phụ thuộc của nó trong
for line in filestream:
04 dễ dàng thực hiện:

Như đang sử dụng ________ 105/________ 106 cho các cài đặt Python khác:

Chúng tôi đã giành chiến thắng trong các chi tiết cụ thể về cách thức hoạt động của

total = str(int(currentline[0]) + int(currentline[1]) + int(currentline [2])) + "\n"
7 hoặc cách sử dụng nó. Để điều trị chuyên sâu về việc sử dụng
total = str(int(currentline[0]) + int(currentline[1]) + int(currentline [2])) + "\n"
7 để đọc và phân tích các bộ dữ liệu lớn, hãy xem bài viết tuyệt vời của Chaiwari Tiwari, làm việc với các tệp excel lớn trong gấu trúc.

Đọc các tệp CSV với total = str(int(currentline[0]) + int(currentline[1]) + int(currentline [2])) + "\n" 7

Để hiển thị một số khả năng của các khả năng CSV

total = str(int(currentline[0]) + int(currentline[1]) + int(currentline [2])) + "\n"
7, tôi đã tạo ra một tệp phức tạp hơn một chút để đọc, được gọi là
for line in filestream:
11. Nó chứa dữ liệu về nhân viên công ty:

for line in filestream:
8

Đọc CSV thành một

total = str(int(currentline[0]) + int(currentline[1]) + int(currentline [2])) + "\n"
7
for line in filestream:
13 rất nhanh và đơn giản:

for line in filestream:
9

Rằng nó: ba dòng mã và chỉ một trong số chúng đang thực hiện công việc thực tế.

for line in filestream:
14 mở, phân tích và đọc tệp CSV được cung cấp và lưu trữ dữ liệu trong một khung dữ liệu. In kết quả
for line in filestream:
13 trong đầu ra sau:

currentline = line.split(",")
0

Dưới đây là một vài điểm đáng chú ý:

  • Đầu tiên,
    total = str(int(currentline[0]) + int(currentline[1]) + int(currentline [2])) + "\n"
    
    7 nhận ra rằng dòng đầu tiên của CSV chứa tên cột và sử dụng chúng tự động. Tôi gọi đây là lòng tốt.
  • Tuy nhiên,
    total = str(int(currentline[0]) + int(currentline[1]) + int(currentline [2])) + "\n"
    
    7 cũng đang sử dụng các chỉ số số nguyên dựa trên không trong
    for line in filestream:
    
    13. Điều đó bởi vì chúng tôi đã nói với nó những gì chỉ số của chúng tôi nên là.
  • Hơn nữa, nếu bạn nhìn vào các loại dữ liệu của các cột của chúng tôi, bạn sẽ thấy

    total = str(int(currentline[0]) + int(currentline[1]) + int(currentline [2])) + "\n"
    
    7 đã chuyển đổi đúng các cột
    for line in filestream:
    
    20 và
    for line in filestream:
    
    21 thành các số, nhưng cột
    for line in filestream:
    
    22 vẫn là một
    with open("test.txt", "r") as filestream:
        with open("answers.txt", "w") as filestreamtwo:
            for line in filestream:
                currentline = line.split(",")
                total = str(int(currentline[0]) + int(currentline[1]) + int(currentline [2])) + "\n"
                filestreamtwo.write(total)
    
    1. Điều này dễ dàng được xác nhận ở chế độ tương tác:

    >>>

    currentline = line.split(",")
    
    1

Hãy để giải quyết vấn đề này một lần. Để sử dụng một cột khác làm chỉ mục

for line in filestream:
13, hãy thêm tham số tùy chọn
for line in filestream:
25:

currentline = line.split(",")
2

Bây giờ trường

for line in filestream:
26 là chỉ mục
for line in filestream:
13 của chúng tôi:

currentline = line.split(",")
3

Tiếp theo, hãy để sửa lỗi loại dữ liệu của trường

for line in filestream:
22. Bạn có thể buộc
total = str(int(currentline[0]) + int(currentline[1]) + int(currentline [2])) + "\n"
7 phải đọc dữ liệu như một ngày với tham số tùy chọn
for line in filestream:
30, được định nghĩa là danh sách các tên cột để xử lý là ngày:

currentline = line.split(",")
4

Lưu ý sự khác biệt trong đầu ra:

currentline = line.split(",")
5

Ngày hiện được định dạng đúng, dễ dàng xác nhận ở chế độ tương tác:

>>>

currentline = line.split(",")
6

Hãy để giải quyết vấn đề này một lần. Để sử dụng một cột khác làm chỉ mục

for line in filestream:
13, hãy thêm tham số tùy chọn
for line in filestream:
25:

currentline = line.split(",")
7

Bây giờ trường

for line in filestream:
26 là chỉ mục
for line in filestream:
13 của chúng tôi:

currentline = line.split(",")
8

Tiếp theo, hãy để sửa lỗi loại dữ liệu của trường for line in filestream: 22. Bạn có thể buộc total = str(int(currentline[0]) + int(currentline[1]) + int(currentline [2])) + "\n" 7 phải đọc dữ liệu như một ngày với tham số tùy chọn for line in filestream: 30, được định nghĩa là danh sách các tên cột để xử lý là ngày:

Lưu ý sự khác biệt trong đầu ra:

currentline = line.split(",")
9

Ngày hiện được định dạng đúng, dễ dàng xác nhận ở chế độ tương tác:

total = str(int(currentline[0]) + int(currentline[1]) + int(currentline [2])) + "\n"
0

Nếu các tệp CSV của bạn không có tên cột trong dòng đầu tiên, bạn có thể sử dụng tham số tùy chọn for line in filestream: 31 để cung cấp danh sách các tên cột. Bạn cũng có thể sử dụng điều này nếu bạn muốn ghi đè các tên cột được cung cấp trong dòng đầu tiên. Trong trường hợp này, bạn cũng phải nói với for line in filestream: 14 để bỏ qua các tên cột hiện có bằng tham số tùy chọn for line in filestream: 33:

Lưu ý rằng, vì các tên cột đã thay đổi, các cột được chỉ định trong các tham số tùy chọn

for line in filestream:
25 và
for line in filestream:
30 cũng phải được thay đổi. Điều này bây giờ dẫn đến đầu ra sau:

Viết các tệp CSV bằng

total = str(int(currentline[0]) + int(currentline[1]) + int(currentline [2])) + "\n"
7

Tất nhiên, nếu bạn có thể lấy dữ liệu của mình ra khỏi

total = str(int(currentline[0]) + int(currentline[1]) + int(currentline [2])) + "\n"
7 một lần nữa, thì điều đó không tốt cho bạn. Viết một
for line in filestream:
13 vào tệp CSV cũng dễ dàng như đọc một tệp. Hãy viết dữ liệu với tên cột mới vào tệp CSV mới:

Sự khác biệt duy nhất giữa mã này và mã đọc ở trên là cuộc gọi

for line in filestream:
39 đã được thay thế bằng
for line in filestream:
40, cung cấp tên tệp. Tệp CSV mới trông như thế này: This tutorial has a related video course created by the Real Python team. Watch it together with the written tutorial to deepen your understanding: Reading and Writing CSV Files

Chức năng nào được sử dụng để đọc tệp giá trị phân tách bằng dấu phẩy trong Python?

Đọc từ tệp CSV được thực hiện bằng cách sử dụng đối tượng đầu đọc.Tệp CSV được mở dưới dạng tệp văn bản với hàm Open in () tích hợp của Python, trả về một đối tượng tệp.reader object. The CSV file is opened as a text file with Python's built-in open() function, which returns a file object.

Làm thế nào mở một tập tin trong Python và chia nó?

Tách tệp văn bản với phương thức Split () Sau khi sử dụng Python với câu lệnh để mở tệp dữ liệu, chúng ta có thể lặp qua nội dung của tệp với một vòng lặp.Khi dữ liệu được đọc, phương thức chia () được sử dụng để tách văn bản thành các từ.iterate through the file's contents with a for loop. Once the data is read, the split() method is used to separate the text into words.