Tôi đã phát triển một mã chịu trách nhiệm đọc các từ của tệp txt, trong trường hợp "elquijote.txt" của tôi sau đó sử dụng từ điển {key: value} để hiển thị các từ xuất hiện và sự xuất hiện của chúng.Đọc các từ từ tệp txt - Python
Ví dụ cho một tập tin "test1.txt" với những lời sau đây:
hello hello hello good bye bye
Kết quả của chương trình của tôi là:
hello 3
good 1
bye 2
Một trong những lựa chọn mà chương trình đã, đang nó cho thấy những từ xuất hiện số lần lớn hơn số được giới thiệu bởi chúng tôi thông qua một đối số.
Nếu trong trình bao, chúng tôi đặt lệnh sau "python readingwords.py text.txt 2", sẽ hiển thị những từ chứa trong tệp "test1.txt" xuất hiện nhiều hơn số mà chúng tôi đã nhập trong trường hợp này 2
Output:
hello 3
Bây giờ chúng ta có thể giới thiệu một số thứ ba của từ thông dụng như yếu tố quyết định liên từ, trong đó, là rất chung chung, chúng tôi không muốn được hiển thị hoặc giới thiệu trong của chúng tôi từ điển.
Mã của tôi hoạt động chính xác, vấn đề là sử dụng các tệp lớn, chẳng hạn như "elquijote.txt" mất nhiều thời gian để hoàn tất quá trình.
Tôi đã suy nghĩ và đó là vì việc tôi sử dụng danh sách phụ trợ của mình để loại bỏ các từ.
Tôi đã nghĩ là giải pháp không được giới thiệu trong danh sách của tôi những từ xuất hiện trong tệp txt được nhập bởi đối số, chứa các từ cần loại bỏ.
Đây là mã của tôi:
def contar(aux):
counts = {}
for palabra in aux:
palabra = palabra.lower()
if palabra not in counts:
counts[palabra] = 0
counts[palabra] += 1
return counts
def main():
characters = '!?¿-.:;-,><=*»¡'
aux = []
counts = {}
with open(sys.argv[1],'r') as f:
aux = ''.join(c for c in f.read() if c not in characters)
aux = aux.split()
if (len(sys.argv)>3):
with open(sys.argv[3], 'r') as f:
remove = "".join(c for c in f.read())
remove = remove.split()
#Borrar del archivo
for word in aux:
if word in remove:
aux.remove(word)
counts = contar(aux)
for word, count in counts.items():
if count > int(sys.argv[2]):
print word, count
if __name__ == '__main__':
main()
Contar chức năng giới thiệu các từ trong từ điển.
Và chức năng chính giới thiệu trong danh sách "aux" những từ không chứa ký tự tượng trưng và sau đó xóa khỏi cùng danh sách những từ "cấm" được tải từ tệp .txt khác.
Tôi nghĩ giải pháp đúng là loại bỏ các từ bị cấm mà tôi loại bỏ các biểu tượng không được chấp nhận, nhưng sau khi thử một số cách tôi đã không quản lý để làm điều đó một cách chính xác.
Ở đây bạn có thể kiểm tra mã của mình trực tuyến: https://repl.it/Nf3S/54 Cảm ơn.
tại sao không làm một từ bình thường đếm có thể với ** collections.Counter ** và sau đó loại bỏ từ không mong muốn của bạn sau khi? di chuyển mã chậm đến một vòng lặp âm lượng nhỏ hơn. –
Bạn có gặp vấn đề gì về bộ nhớ không? "elquijote.txt" có thể là một tệp thực sự dài. Nếu nó là cuốn sách đầy đủ nó có 381.104 từ từ một tập hợp của 22.939 từ khác nhau và hơn 2 triệu ký tự. Việc xử lý hàng loạt cuốn sách phải là một ý tưởng hay. – Adirio