Hỏi về cách ngăn một đoạn văn bản thành từng dòng

Mọi người cho em hỏi là em có 1 đoạn văn bản dài liền nhau. Bây giờ em muốn dùng code để 1 đoạn văn liên ấy chia thành từng dòng tách biệt thì làm như thế nào ạ. VÍ DỤ như dòng 1 có 5 chữ cái, dòng 2 có 8 chữ cái và các đoạn sau lại tiếp tục như thế.
Mong mọi người giúp đỡ :smile:

Thì cứ cắt chuỗi ra thôi.

2 Likes

Bạn chạy thử đoạn Cede này xem được không:

def print_by_letter(file_name):
        f = open(file_name).read().split()[0]
        i =0
        n = 5
        while i < len(f):
            print (f[i:i+n])
            i += n
            if n == 5:
                n = 8
            else:
                n = 5
print_by_letter('demo.txt')
1 Like

Mình gửi lại đoạn Code này tổng quát hơn, từ đây bạn có thể tùy chọn số ký tự cần tách bằng cách bổ sung thêm vào trong list lst nhé:

def print_by_letter(file_name):
        f = open(file_name).read().split()[0]
        i =0
        lst = [1,2,5,8]
        n = min(lst)
        while i < len(f):
                print (f[i:i+n])
                i += n
                if n < max(lst):
                        n = lst[lst.index(n)+1]
                else:
                        n = min(lst)
print_by_letter('demo.txt')
1 Like

Cảm ơn bạn. Để tối về mình thử :smile:

Hoặc đơn giản hơn nhưng có hơi khó hiểu chút:

def read_by_letters(filename):
	fp = open(filename)
	num_bytes = 5
	just_a_number = -3
	buff = fp.read(num_bytes)
	while buff:
		print '%r' %buff
		num_bytes -= just_a_number
		buff = fp.read(num_bytes)
		just_a_number = -just_a_number

Bản thân file_handle.read([size]) là hàm có thể đọc 1 số ký tự hoặc toàn bộ file. Nên .read(5).read(8) là đủ để hiểu rồi :3 không cần phải thực hiện thao tác cắt chuỗi.

Với lại, các bạn ở trên lưu ý một chút, việc đưa code cho người khác thì không nên đặt tên biến kiểu a, b, c, d, i, j, n, t,… Giúp người thì tốt nhưng làm vậy thì nhìn code khá là chán :joy: không ai đọc nổi đâu chứ đừng đến ngồi giải mã ra biến đó có mục đích gì.

5 Likes

Hii . Em là dân trái ngành, không được đào tạo qua trường lớp nên viết Code còn lúng túng không được bài bản và cũng không biết là cần phải tuân theo một số quy tắc như anh anh nói ở trên. Cám ơn anh đã góp ý cho e ạ.

1 Like

Thanks bạn nhé :smiley:

Haha, em đây là dân Vật lý, không phải IT, học code vì muốn lấy le với đời thôi. Anh chắc sinh năm 1990 thì hơn tuổi em rồi, vì nói chung chung nên em xưng “bạn”.

Việc em nói chỉ là lưu ý, code rõ ràng thì sau này bản thân hay người nào đọc cũng hiểu. Chứ một đống người trên đây vẫn đặt tên kiểu a, b, c, x, y, z, … mà :joy: Sửa được người nào thì hay người đó.

3 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?