01/10/2018, 12:18

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 đỡ

Phạm Tiến Thành Đạt viết 14:27 ngày 01/10/2018

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

giang viết 14:29 ngày 01/10/2018

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 đỡ

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')
giang viết 14:28 ngày 01/10/2018

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')
Hiếu viết 14:19 ngày 01/10/2018

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

Khoa NTA viết 14:27 ngày 01/10/2018

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 không ai đọc nổi đâu chứ đừng đến ngồi giải mã ra biến đó có mục đích gì.

giang viết 14:18 ngày 01/10/2018

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 không ai đọc nổi đâu chứ đừng đến ngồi giải mã ra biến đó có mục đích gì.

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 ạ.

Hiếu viết 14:20 ngày 01/10/2018

Thanks bạn nhé

Khoa NTA viết 14:22 ngày 01/10/2018

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à Sửa được người nào thì hay người đó.

Bài liên quan
0