Computer >> Máy Tính >  >> Lập trình >> Python

Python:Đọc tệp văn bản thành danh sách

Lưu trữ dữ liệu trong tệp cho phép bạn ghi lại dữ liệu mà một chương trình đang hoạt động. Điều này có nghĩa là bạn không phải tạo lại dữ liệu khi làm việc với một chương trình. Bạn chỉ cần đọc dữ liệu đó từ một tệp.

Để đọc tệp, hãy sử dụng readlines() phương pháp. Khi bạn đã đọc một tệp, bạn sử dụng split() để chuyển những dòng đó thành một danh sách.

Trong hướng dẫn này, chúng tôi thảo luận về cách sử dụng split() để đọc một tệp văn bản thành một danh sách. Chúng tôi sẽ đề cập đến một ví dụ để bạn có thể bắt đầu đọc các tệp văn bản vào danh sách một cách nhanh chóng.

Python:Đọc tệp văn bản thành danh sách

Hãy bắt đầu với một tệp văn bản có tên là Grill_cheese.txt. Tệp này chứa các thành phần của một chiếc bánh mì kẹp pho mát nướng. Nội dung tệp của chúng tôi trông như thế này:

2 tbsp, ricotta
1 tbsp, grated parmesan
50g, mozzarella
25g, gorgonzola
2, thick slices white bread
1 tbsp, butter

Cột đầu tiên trong tệp của chúng tôi chứa số lượng của mỗi thành phần sẽ được sử dụng. Cột thứ hai chứa tên của một thành phần.

Chúng tôi đọc tệp này thành mã của chúng tôi bằng cách sử dụng open()readlines() phương pháp:

with open("grilled_cheese.txt", "r") as grilled_cheese:
	lines = grilled_cheese.readlines()
	print(lines)

Trong mã của chúng tôi, chúng tôi mở một tệp có tên “Grill_cheese.txt” ở chế độ đọc. Chế độ đọc được biểu thị bằng ký tự “r” trong open() của chúng tôi tuyên bố. Tiếp theo, chúng tôi in những dòng đó vào bảng điều khiển.

Hãy xem những gì mã Python của chúng tôi trả về:

81% người tham gia cho biết họ cảm thấy tự tin hơn về triển vọng công việc công nghệ của mình sau khi tham gia một cuộc thi đào tạo. Kết hợp với bootcamp ngay hôm nay.

Sinh viên tốt nghiệp bootcamp trung bình đã dành ít hơn sáu tháng để chuyển đổi nghề nghiệp, từ khi bắt đầu bootcamp đến khi tìm được công việc đầu tiên của họ.

['2 tbsp, ricotta\n', '1 tbsp, grated parmesan\n', '50g, mozzarella\n', '25g, gorgonzola\n', '2, thick slices white bread\n', '1 tbsp, butter\n']

Mã của chúng tôi trả về danh sách từng dòng trong tệp của chúng tôi. Đây không hoàn toàn là kết quả mà chúng tôi đang mong đợi. Trong khi chúng tôi đã đọc tệp của mình thành một danh sách, chúng tôi gặp sự cố:mỗi dòng được lưu trữ trong một chuỗi riêng. Các thành phần và số lượng của chúng không tách rời nhau.

Phân chia các giá trị thành một danh sách

Để giải quyết vấn đề này, chúng tôi sử dụng phương thức split (). Phương thức này cho phép chúng tôi chia một chuỗi bằng cách sử dụng ký tự phân tách mà chúng tôi chỉ định.

Để bắt đầu, chúng tôi khai báo hai danh sách:số lượng và thành phần. Mã này sẽ vẫn được thụt lề vì nó là một phần của open() của chúng tôi khối mã.

	quantities = []
	ingredients = []

Chúng tôi sẽ lặp lại danh sách của mình để có thể truy cập từng dòng văn bản từ tệp của mình. Sau đó, chúng tôi sẽ chia mỗi dòng thành hai phần. Điểm phân chia là dấu phẩy theo sau là dấu cách trên mỗi dòng:

for l in lines:
		 as_list = l.split(", ")
		 quantities.append(as_list[0])
		 ingredients.append(as_list[1])

Vòng lặp for cho phép chúng tôi đọc từng dòng tệp của mình. Giá trị đầu tiên trong “as_list” là số lượng của một thành phần. Giá trị thứ hai là tên của thành phần. Sau đó, chúng tôi in cả hai danh sách này vào bảng điều khiển:

	print(quantities)
	print(ingredients)

Hãy chạy mã của chúng tôi:

['2 tbsp, ricotta\n', '1 tbsp, grated parmesan\n', '50g, mozzarella\n', '25g, gorgonzola\n', '2, thick slices white bread\n', '1 tbsp, butter\n']
['2 tbsp', '1 tbsp', '50g', '25g', '2', '1 tbsp']
['ricotta\n', 'grated parmesan\n', 'mozzarella\n', 'gorgonzola\n', 'thick slices white bread\n', 'butter\n']

Mã của chúng tôi in ba danh sách vào bảng điều khiển. Danh sách đầu tiên là danh sách tất cả các dòng văn bản trong tệp của chúng tôi. Danh sách thứ hai chứa tất cả các số lượng từ tệp của chúng tôi. Danh sách thứ ba chứa tất cả các thành phần.

Xóa dòng mới

Vẫn còn một cải tiến mà chúng tôi cần thực hiện. Mọi thành phần đều kết thúc bằng ký tự “\ n”. Ký tự này biểu thị một dòng mới. Chúng tôi có thể xóa ký tự này bằng cách sử dụng phương thức Replace ():

for l in lines:
	   	  as_list = l.split(", ")
		  quantities.append(as_list[0])
		  ingredients.append(as_list[1].replace("\n", ""))

Trong vòng lặp for của chúng tôi, chúng tôi thay thế giá trị “\ n” bằng một chuỗi trống. Chúng tôi thực hiện việc này trên giá trị as_list [1] tương ứng với tên của từng thành phần.

Bây giờ chúng tôi đã thực hiện thay đổi này, chương trình của chúng tôi đã sẵn sàng:

with open("grilled_cheese.txt", "r") as grilled_cheese:
	   lines = grilled_cheese.readlines()

	   quantities = []
	   ingredients = []

	   for l in lines:
	  			 as_list = l.split(", ")
			     quantities.append(as_list[0])
			     ingredients.append(as_list[1].replace("\n", ""))

	   print(quantities)
	   print(ingredients)

Hãy chạy mã của chúng tôi và xem điều gì sẽ xảy ra:

['2 tbsp', '1 tbsp', '50g', '25g', '2', '1 tbsp']
['ricotta', 'grated parmesan', 'mozzarella', 'gorgonzola', 'thick slices white bread', 'butter']

Mã của chúng tôi chuyển đổi thành công tệp văn bản của chúng tôi thành hai danh sách. Một danh sách chứa số lượng thành phần cho một công thức. Danh sách khác chứa các thành phần chúng tôi sẽ sử dụng cho công thức.

Kết luận

Bạn có thể đọc tệp văn bản bằng open()readlines() các phương pháp. Để đọc một tệp văn bản thành một danh sách, hãy sử dụng split() phương pháp. Phương thức này chia các chuỗi thành một danh sách tại một ký tự nhất định.

Trong ví dụ trên, chúng tôi chia một chuỗi thành một danh sách dựa trên vị trí của dấu phẩy và dấu cách (“,”). Bây giờ, bạn đã sẵn sàng để đọc một tệp văn bản thành một danh sách bằng Python như một chuyên gia.