/*auto readmore*/ /*auto readmore*/ /* an hien script*/ // an hien password /*an hien ma chuong trinh cong tru */ /*Scrollbox thanh cuon*/ /***Nhung CODE***/ /* dòng xanh dòng trắng */ /* https://cdnjs.com/libraries/prism lay thu vien, can vao ten file ma goi 1. copy link vao vi du:prism-python.min.js 2. ten ngon nua la python */ /*=== New posts ===*/ /*header slider*/ /*=== bai viet lien quan===*/ /*===tabcode===*/

Học Python Qua Ví Dụ #015 - Mail Merge/Trộn Mail Căn Bản Trong Python


Nên xem các bài dưới đây trước khi xem bài này

Mail Merge - Trộn Thư là tính năng rất hữu ích của Ms Word, tính năng này giúp chúng ta giảm thiểu thời gian trong các việc như: soạn hợp đồng, in phiếu lương, in giấy mời, thư cám ơn,... Hôm nay chúng ta tìm hiểu cách thực hiện Mail Merge trên python.

Có file Noidung.xlm có nội dung:
Hi: your_name
Your ID: your_id 
Your Password: your_password
Your OTP: your_otp

và file Danhsach.csv có nội dung:

Yêu cầu:
Các trường: your_name, your_id, your_password, your_otp của file Noidung.xlm sẽ thay đổi, mỗi dòng trong file Danhsach.csv sẽ được điền vào các trường tương ứng ở file Noidung.xlm. Kết quả tương tự như hình bên dưới
 

Nhận xét: 
Chúng ta thấy phần nội dung của file Noidung.xlm được lặp lại 6 lần (tùy thuộc vào số lượng dòng trong file Danhsach.csv). Nên file Noidung.xlm sẽ được mở trước sau đó mở file Danhsach.csv và sẽ có sự đi lặp lại khi xử lý file này.

Thực hiện:
Code:

with open ("Noidung.xml","r") as rf:
	noidung = rf.read()

	with open ("danhsach.csv","r") as rf_ds:
		
		for line_ds in rf_ds.readlines():
			fiedls_ds = line_ds.split(",")
			# đảm bảo khi thực hiện mỗi bước nhảy của vòng lặp nội dung file mới là đúng nội dung ban đầu của file Noidung.xml và
			noidung_moi = noidung
			'''
			Thực hiện thay thế
			Nếu thấy các trường:your_name, your_id, your_password, your_otp 
			thì thay thế bằng các trường tương ứng trong file danh sách
			'''
			noidung_moi = noidung_moi.replace("your_name",fiedls_ds[1])
			noidung_moi = noidung_moi.replace("your_id",fiedls_ds[2])
			noidung_moi = noidung_moi.replace("your_password",fiedls_ds[3])
			noidung_moi = noidung_moi.replace("your_otp",fiedls_ds[4])
			print(noidung_moi)			

Kết quả:
C:\python>python Demo.py
Hi: Nguyen Van Troi
Your ID: id2020
Your Password: 112233
Your OTP: aabbcc

Hi: Tran Van Luong
Your ID: id2121
Your Password: 445566
Your OTP: ddeeff

Hi: Truong Viet Hoang
Your ID: id2222
Your Password: 778899
Your OTP: gghhkk

Hi: Cong Vuong
Your ID: id2323
Your Password: 223344
Your OTP: xxyyzz

Hi: Tien Linh
Your ID: id2424
Your Password: 334455
Your OTP: aawwqq

Hi: Van Quyet
Your ID: id2525
Your Password: 556677
Your OTP: ppkkll

C:\python>


Với code trên chúng ta thấy từ dòng 15 đến dòng 18 chúng ta có thể thay bằng vòng lặp và các trường: your_name, your_id, your_password, your_otp có thể đưa vào biến list sẽ thích hợp hơn, và code sẽ gọn hơn.

Code:
# Định nghĩa biến key_word là một list gồm các key word sẽ được thay thế

key_word = ["No.", "your_name", "your_id","your_password", "your_otp"]

with open ("Noidung.xml","r") as rf:
	noidung = rf.read()

	with open ("danhsach.csv","r") as rf_ds:
		
		rf_ds.readline() # Bỏ dòng đầu tiên, vì dòng đầu tiên là dòng tiêu đề
		
		for line_ds in rf_ds.readlines():
			fiedls_ds = line_ds.split(",")
			# đảm bảo khi thực hiện mỗi bước nhảy của vòng lặp nội dung file mới là đúng nội dung ban đầu của file Noidung.xml và
			noidung_moi = noidung
			
			#tạo vòng lặp chạy từ 1 cho đến hết chiều dài của biến key_word
			for i in range(1, len(key_word),1):
				noidung_moi = noidung_moi.replace(key_word[i],fiedls_ds[i])				
			print(noidung_moi))						



Xong!
 


No comments:

Post a Comment

/*header slide*/