Tại sao readline() bỏ qua dòng đầu tiên Python?

Chọn một trang web để nhận nội dung đã dịch nếu có và xem các sự kiện và ưu đãi tại địa phương. Dựa trên vị trí của bạn, chúng tôi khuyên bạn nên chọn.

Bạn cũng có thể chọn một trang web từ danh sách sau

Làm thế nào để có được hiệu suất trang web tốt nhất

Chọn trang Trung Quốc (bằng tiếng Trung hoặc tiếng Anh) để có hiệu suất trang tốt nhất. Các trang web quốc gia khác của MathWorks không được tối ưu hóa cho các lượt truy cập từ vị trí của bạn

Tệp CSV (Giá trị được phân tách bằng dấu phẩy) là định dạng tệp phổ biến để lưu trữ và trao đổi dữ liệu. Trong hướng dẫn này, chúng ta sẽ tìm hiểu cách bỏ qua dòng đầu tiên của tệp CSV khi đọc nó bằng Java. Điều này có thể hữu ích khi dòng đầu tiên của tệp CSV chứa tiêu đề và chúng tôi không muốn đưa chúng vào dữ liệu của mình

Bỏ qua dòng đầu tiên của tệp CSV trong Java Ví dụ

Bước 1. Nhập các thư viện cần thiết Để đọc tệp CSV trong Java, chúng tôi sẽ cần nhập các thư viện sau

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

Bước 2. Đọc tệp CSV Chúng tôi sẽ sử dụng lớp BufferedReader để đọc tệp CSV. Mã để đọc tệp sẽ giống như thế này

BufferedReader reader = new BufferedReader(new FileReader("file.csv"));
String line;
while ((line = reader.readLine()) != null) {
    // code to process the line
}
reader.close();

Bước 3. Bỏ qua dòng đầu tiên Để bỏ qua dòng đầu tiên của tệp CSV, chúng ta có thể thêm một câu lệnh if trước vòng lặp while để kiểm tra xem dòng hiện tại có phải là dòng đầu tiên không. Nếu đúng như vậy, chúng ta chỉ cần gọi lại phương thức readLine() để chuyển sang dòng tiếp theo. Mã sửa đổi sẽ trông giống như thế này

BufferedReader reader = new BufferedReader(new FileReader("file.csv"));
String line = reader.readLine(); // read the first line
if (line != null) {
    while ((line = reader.readLine()) != null) {
        // code to process the line
    }
}
reader.close();

Bước 4. Chia dòng Chúng ta có thể sử dụng phương thức split() để chia dòng thành các trường bằng cách sử dụng dấu phân cách (e. g. "," hoặc ";"). Đây là một ví dụ về cách chia dòng bằng dấu phẩy

String[] fields = line.split(",");

Bước 5. Xử lý các trường Bây giờ chúng ta có thể truy cập các trường riêng lẻ của dòng và xử lý chúng khi cần. Đây là một ví dụ về cách in các trường

for (String field : fields) {
    System.out.println(field);
}

Hoàn thành ví dụ

Đây là ví dụ hoàn chỉnh về cách đọc tệp CSV và bỏ qua dòng đầu tiên

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

public class CSVReader {
    public static void main(String[] args) {
        BufferedReader reader = null;
        try {
            reader = new BufferedReader(new FileReader("file.csv"));
            String line = reader.readLine(); // read the first line
            if (line != null) {
                while ((line = reader.readLine()) != null) {
                    String[] fields = line.split(",");
                    for (String field : fields) {
                        System.out.println(field);
                    }
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (reader != null) {
                try {
                    reader.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

Ví dụ này sử dụng khối try-catch-finally để xử lý bất kỳ IOException nào có thể xảy ra khi đọc tệp. BufferedReader được đóng trong khối cuối cùng để đảm bảo rằng nó luôn đóng, ngay cả khi một ngoại lệ được đưa ra

Lưu ý rằng ví dụ này chỉ in ra từng trường của tệp CSV, bạn có thể thay thế Hệ thống. ngoài. println(trường);

Ngoài ra, hãy thay đổi tên tệp để khớp với tên tệp chính xác mà bạn muốn đọc

Phần kết luận

Tóm lại, hướng dẫn này cung cấp hướng dẫn từng bước về cách bỏ qua dòng đầu tiên của tệp CSV khi đọc nó bằng Java. Chúng ta đã học cách nhập các thư viện cần thiết, đọc tệp CSV bằng lớp BufferedReader, bỏ qua dòng đầu tiên bằng cách gọi phương thức readLine() trước vòng lặp while, chia dòng thành các trường bằng phương thức split() và xử lý các trường

Với kiến ​​thức này, giờ đây bạn có thể đọc các tệp CSV trong Java và bỏ qua dòng đầu tiên nếu nó chứa tiêu đề hoặc bất kỳ dữ liệu không mong muốn nào khác. Hãy nhớ sử dụng khối try-catch-Last để xử lý bất kỳ IOException nào có thể xảy ra khi đọc tệp và đóng BufferedReader trong khối cuối cùng để đảm bảo rằng nó luôn đóng

Trong bài viết này, chúng ta sẽ tìm hiểu cách đọc tệp từ dòng thứ hai trong Python. Chúng tôi sẽ sử dụng một số chức năng tích hợp, một số cách tiếp cận đơn giản và một số mã tùy chỉnh để hiểu rõ hơn về chủ đề

Python xử lý các hoạt động tệp khác nhau. Trong trường hợp đọc tệp, người dùng có thể bắt đầu đọc tệp từ dòng đầu tiên hoặc từ dòng thứ hai. Bài viết này sẽ hướng dẫn cách bạn có thể bỏ qua hàng tiêu đề hoặc dòng đầu tiên và bắt đầu đọc tệp từ dòng 2. Hãy để chúng tôi thảo luận về bốn phương pháp khác nhau để đọc một tệp từ dòng 2. Chúng tôi sẽ đọc một mẫu. txt cũng như một mẫu. tệp csv

Tệp văn bản mẫu //mẫu. txt

Student Details of Class X
David, 18, Science
Amy, 19, Commerce
Frank, 19, Commerce
Mark, 18, Arts
John, 18, Science

Tệp CSV mẫu //mẫu. csv

Student Details of Class X
David  18 Science
Amy    19 Commerce
Frank  19 Commerce
Mark   18 Arts
John   18 Science

Bây giờ, chúng ta hãy xem bốn cách khác nhau để đọc tệp văn bản và tệp csv từ dòng 2 trong Python. Chúng tôi sẽ sử dụng các tệp trên để đọc nội dung

Ví dụ. Đọc tệp văn bản từ dòng 2 sử dụng next()

Chúng tôi sử dụng mẫu. txt để đọc nội dung. Phương thức này sử dụng next() để bỏ qua phần đầu và bắt đầu đọc tệp từ dòng 2

Ghi chú. Nếu bạn muốn in tiêu đề sau, thay vì next(f), hãy sử dụng f.readline() và lưu nó dưới dạng một biến hoặc sử dụng header_line = next(f). Điều này cho thấy rằng tiêu đề của tệp được lưu trữ trong next()

________số 8_______


David, 18, Khoa học
Amy, 19, Thương mại
Frank, 19, Thương mại
Mark, 18, Nghệ thuật
John, 18, Khoa học

Ví dụ. Đọc tệp văn bản từ dòng 2 bằng readlines()

Chúng tôi sử dụng mẫu. txt để đọc nội dung. Phương pháp này sử dụng readlines() để bỏ qua tiêu đề và bắt đầu đọc tệp từ dòng 2. readlines() sử dụng kỹ thuật cắt lát. Như bạn có thể thấy trong ví dụ bên dưới,

Student Details of Class X
David  18 Science
Amy    19 Commerce
Frank  19 Commerce
Mark   18 Arts
John   18 Science
0 , nó biểu thị rằng việc đọc tệp bắt đầu từ chỉ mục 1 khi nó bỏ qua chỉ mục 0. Đây là một giải pháp mạnh mẽ hơn nhiều vì nó tổng quát hóa cho bất kỳ dòng nào. Hạn chế của phương pháp này là nó hoạt động tốt với các tệp nhỏ nhưng có thể gây ra sự cố cho các tệp lớn. Ngoài ra, nó sử dụng không gian không cần thiết vì slice tạo một bản sao của nội dung

#opens the file
f = open("sample.txt",'r')

#skips the header
lines = f.readlines()[1:]
print(lines)

#closes the file
f.close()


['David, 18 tuổi, Khoa học\n', 'Amy, 19 tuổi, Thương mại\n', 'Frank, 19 tuổi, Thương mại\n', 'Mark, 18 tuổi, Nghệ thuật\n', 'John, 18 tuổi, Khoa học']

Ví dụ. Đọc tệp văn bản từ dòng 2 sử dụng islice()

Chúng tôi sử dụng mẫu. txt để đọc nội dung. Phương pháp này nhập khẩu

Student Details of Class X
David  18 Science
Amy    19 Commerce
Frank  19 Commerce
Mark   18 Arts
John   18 Science
1 từ mô-đun
Student Details of Class X
David  18 Science
Amy    19 Commerce
Frank  19 Commerce
Mark   18 Arts
John   18 Science
2 trong Python.
Student Details of Class X
David  18 Science
Amy    19 Commerce
Frank  19 Commerce
Mark   18 Arts
John   18 Science
3 có ba đối số. Đối số đầu tiên là tệp để đọc dữ liệu, đối số thứ hai là vị trí bắt đầu đọc tệp và đối số thứ ba là Không đại diện cho bước nào. Đây là một cách hiệu quả và Pythonic để giải quyết vấn đề và có thể được mở rộng thành một số dòng tiêu đề tùy ý. Điều này thậm chí hoạt động đối với các tệp được tải lên trong bộ nhớ trong khi lặp qua các đối tượng tệp

from itertools import islice

#opens the file
with open("sample.txt") as f:
     for line in islice(f, 1, None):
        print(line)

#closes the file
f.close()


David, 18, Khoa học
Amy, 19, Thương mại
Frank, 19, Thương mại
Mark, 18, Nghệ thuật
John, 18, Khoa học

Thí dụ. Đọc tệp CSV từ Dòng 2

Chúng tôi sử dụng mẫu. csv để đọc nội dung. Phương pháp này đọc tệp từ dòng 2 bằng cách sử dụng

Student Details of Class X
David  18 Science
Amy    19 Commerce
Frank  19 Commerce
Mark   18 Arts
John   18 Science
4 bỏ qua tiêu đề bằng cách sử dụng
Student Details of Class X
David  18 Science
Amy    19 Commerce
Frank  19 Commerce
Mark   18 Arts
John   18 Science
5 và in các hàng từ dòng 2. Phương pháp này cũng có thể hữu ích khi đọc nội dung của nhiều tệp CSV

import csv

#opens the file
with open("sample.csv", 'r') as r: 
        next(r)                  
        #skip headers             
        rr = csv.reader(r)
        for row in rr:
            print(row)


['David', '18', 'Khoa học']
['Amy', '19', 'Thương mại']
['Frank', '19', 'Thương mại']
['Mark', '18', 'Arts']
['John', '18', 'Khoa học']

Phần kết luận

Trong bài viết này, chúng ta đã học cách đọc nội dung tệp từ dòng 2 bằng cách sử dụng một số hàm có sẵn như

Student Details of Class X
David  18 Science
Amy    19 Commerce
Frank  19 Commerce
Mark   18 Arts
John   18 Science
5, readlines(),
Student Details of Class X
David  18 Science
Amy    19 Commerce
Frank  19 Commerce
Mark   18 Arts
John   18 Science
3,
Student Details of Class X
David  18 Science
Amy    19 Commerce
Frank  19 Commerce
Mark   18 Arts
John   18 Science
9 và các ví dụ khác để bỏ qua dòng tiêu đề từ các tệp đã cho

Tại sao readline bỏ qua một dòng?

nếu bạn sử dụng phương thức read() hoặc readline() trên một đối tượng tệp đang mở và một trong hai phương thức này trả về một chuỗi trống, thì đó là do đối tượng tệp hiện đang ở . .

Readline có luôn đọc dòng đầu tiên không?

Nó chỉ gán dòng đầu tiên khi hàm được gọi . readgrades sẽ chứa kết quả đọc dòng. Nó không thay đổi trừ khi bạn thực hiện một lần đọc khác = tệp lớp. dòng đọc ().

Làm thế nào để readline() biết vị trí của từng dòng?

readline đọc từng dòng theo thứ tự. Nó bắt đầu bằng cách đọc các đoạn của tệp từ đầu. Khi gặp dấu ngắt dòng, nó sẽ trả về dòng đó . Mỗi lần gọi readline liên tiếp trả về dòng tiếp theo cho đến khi dòng cuối cùng được đọc.

Readline có chuyển sang dòng tiếp theo không?

Phương thức readline đọc một dòng từ tệp và trả về dưới dạng một chuỗi. Chuỗi do readline trả về sẽ chứa ký tự xuống dòng ở cuối .