Trong hướng dẫn ngắn này, chúng ta sẽ tìm hiểu cách truy xuất nội dung của tệp dưới dạng danh sách các từ bằng Python
Xác định nội dung tệp mẫu
Hãy bắt đầu bằng cách tạo một tệp mới với một số nội dung mẫu mà bạn có thể sử dụng để làm theo hướng dẫn này
from pathlib import Path
f_path = Path[r"C:\WorkDir\word_file.txt"]
f_path.write_text['This is our log file that we will parse using Python code.']
Điều này sẽ trả về số nguyên 58, là số ký tự trong văn bản chúng tôi đã viết
Nhập danh sách các từ từ tệp vào danh sách
Để tạo danh sách các từ trong tệp, chúng tôi sẽ sử dụng hai chức năng
- Đọc[]. đọc toàn bộ luồng tệp vào một đối tượng chuỗi
- Tách ra[]. phân chia một chuỗi thành một đối tượng danh sách. Trả về một danh sách
Chúng tôi cũng sẽ sử dụng khối with, khối này đảm nhiệm việc xử lý tệp và giúp chúng tôi không phải đóng tệp một cách rõ ràng sau khi đọc nó
with open[f_path, 'r'] as f_object:
word_lst = f_object.read[].split[]
Nếu chúng tôi in word_lst, chúng tôi sẽ nhận được một phân chia từng từ của tệp của chúng tôi
print [word_lst]
['This', 'is', 'our', 'log', 'file', 'that', 'we', 'will', 'parse', 'using', 'Python', 'code.']
Đọc nhiều dòng tệp từng từ
Chúng ta có thể sử dụng phương pháp đã nêu ở trên để chia các tệp nhiều dòng thành các từ. Nhưng nếu chúng ta muốn lấy một danh sách từng từ riêng biệt cho mỗi dòng/chuỗi trong tệp của mình thì sao?
Trong khi tìm kiếm danh sách các từ tiếng Anh [đối với hướng dẫn tự động hoàn thành], tôi đã tìm thấy. https. // stackoverflow. com/questions/2213607/how-to-get-english-language-word-database đề cập đến https. //www. thông tin. com/datasets/word-list-350000-simple-english-words-excel-readable [đã lưu trữ]
Không biết tại sao infochimps lại đặt danh sách từ bên trong excel [. tệp xls]
Tôi rút các từ thành một tệp văn bản được phân tách bằng dòng mới đơn giản. Cái nào hữu ích hơn khi xây dựng ứng dụng hoặc nhập vào cơ sở dữ liệu, v.v.
Cách tiếp cận đầu tiên là sử dụng phương thức tích hợp sẵn split[]. Chức năng này phân tách một văn bản tại dấu phân cách mà chúng tôi chỉ định. Tham số dấu phân cách được gửi đến hàm split[] và nó cho biết vị trí văn bản sẽ được chia
Do đó, chúng ta phải chuyển khoảng trắng cho hàm split[] dưới dạng dấu phân cách. Hàm này trả về một danh sách đã sửa đổi được phân tách bằng khoảng trắng
ví dụ 1
Trong ví dụ được đưa ra dưới đây, chúng tôi đang lấy một chuỗi làm đầu vào và chúng tôi đang tách chuỗi ở khoảng trắng bằng cách sử dụng các biểu thức chính quy
Tôi đang cố gắng tạo danh sách tất cả các từ được phân loại theo chữ cái “m” trong chuỗi của mình nhưng tôi không quản lý để có kết quả dưới dạng danh sách [chỉ loại không xác định hoặc nhiều danh sách]. Tôi muốn sử dụng len. danh sách với kết quả nhưng tôi không thể với kết quả của mình
< wikipedia_text = “Tu viện Liplje là một tu viện Chính thống giáo Serbia dành riêng cho Lễ Truyền tin và nằm ở Đô thị Teslić ở phía bắc Republika Srpska. Nó nằm ở phần rộng nhất của một hẻm núi hẹp mà qua đó một dòng sông nhỏ tên là Bistrica chảy qua. Sự đề cập sớm nhất về tu viện được tìm thấy trong một biên niên sử có từ nửa sau của thế kỷ 15. Các nhà sư của Liplje đã tích cực sao chép các sách tôn giáo trong thế kỷ 17. ” >
thứ nhất =
Đầu vào =
xác định word_letter[x]
danh sách =
cho từ trong x. tách ra[' ']
nếu từ. bắt đầu bằng[“m”] hoặc từ. bắt đầu bằng[“M”]
danh sách. nối thêm [từ]
in [danh sách]
word_m = word_letter[wikipedia_text]
từ_m
đầu ra
[‘Tu viện’]
[‘tu viện’, ‘tu viện’]
[‘Tu viện’, ‘tu viện’, ‘Thành phố’]
[‘Tu viện’, ‘tu viện’, ‘Thành phố’, ‘đề cập’]
[‘Tu viện’, ‘tu viện’, ‘Thành phố’, ‘đề cập’, ‘tu viện’]
[‘Tu viện’, ‘tu viện’, ‘Thành phố’, ‘đề cập’, ‘tu viện’, ‘nhà sư’]
cái thứ 2
Đầu vào =
xác định word_letter[x]
cho từ trong x. tách ra[' ']
nếu từ. bắt đầu bằng[“m”] hoặc từ. bắt đầu bằng[“M”]
in [từ]
word_m = word_letter[wikipedia_text]
từ_m
Đầu ra =
tu viện
tu viện
đô thị
đề cập đến
tu viện
Các nhà sư
Bất cứ ai trong số các bạn có thể giúp tôi với điều đó?
Cám ơn rất nhiều
có lẽ,
def word_letter[x]:
lst = []
for word in x.split[' '] :
if word.startswith['m'] or word.startswith['M']:
lst.append[word]
return lst
word_m = word_letter[wikipedia_text]
word_m
có thể sử dụng any
để tránh lặp lại word.startswith
def word_letter[x]:
lst = []
for word in x.split[' '] :
if any[word.startswith[j] for j in ['m', 'M']]:
lst.append[word]
return lst
word_m = word_letter[wikipedia_text]
word_m
chúng ta cũng có thể sử dụng cách hiểu danh sách ở đây,
def word_letter[x]:
return [i for i in x.split[' '] if any[i.startswith[j] for j in ['m', 'M']]]
word_m = word_letter[wikipedia_text]
word_m
nếu tên hàm,
def word_letter[x]:
lst = []
for word in x.split[' '] :
if any[word.startswith[j] for j in ['m', 'M']]:
lst.append[word]
return lst
word_m = word_letter[wikipedia_text]
word_m
0 không liên quan,________số 8_______có thể đổi tên,
[lambda paragraph: [word for word in paragraph.split[' '] if any[word.startswith[character] for character in ['m', 'M']]]][wikipedia_text]
có thể có một cách để làm điều này mà không cần sử dụng các vòng lặp, với sự trợ giúp của việc cắt
tìm thấy một cách sử dụng numpy, nhưng nó hơi lặp đi lặp lại
import numpy as np
x = np.array[wikipedia_text.split[' ']]
list[x[np.char.startswith[x, ['M']]]] + list[x[np.char.startswith[x, ['m']]]]
chúng ta có thể sử dụng
def word_letter[x]:
lst = []
for word in x.split[' '] :
if any[word.startswith[j] for j in ['m', 'M']]:
lst.append[word]
return lst
word_m = word_letter[wikipedia_text]
word_m
1, def word_letter[x]:
lst = []
for word in x.split[' '] :
if any[word.startswith[j] for j in ['m', 'M']]:
lst.append[word]
return lst
word_m = word_letter[wikipedia_text]
word_m
2 để giảm sự lặp lại, nhưng số lượng ký tự của mã cao hơn