from glob import glob
pattern = "D:\\report\\shakeall\\*.txt"
filelist = glob[pattern]
def countwords[fp]:
with open[fp] as fh:
return len[fh.read[].split[]]
print "There are" ,sum[map[countwords, filelist]], "words in the files. " "From directory",pattern
import os
uniquewords = set[[]]
for root, dirs, files in os.walk["D:\\report\\shakeall"]:
for name in files:
[uniquewords.add[x] for x in open[os.path.join[root,name]].read[].split[]]
print "There are" ,len[uniquewords], "unique words in the files." "From directory", pattern
Cho đến nay mã của tôi là đây. Điều này đếm số lượng từ duy nhất và tổng số từ từ D:\report\shakeall\*.txt
Vấn đề là, ví dụ, mã này nhận ra code
code.
và code!
Các từ khác nhau. Vì vậy, đây không thể là một câu trả lời cho một số lượng chính xác các từ duy nhất.
Tôi muốn xóa các ký tự đặc biệt khỏi 42 tệp văn bản bằng trình soạn thảo Windows Text
Hoặc đưa ra một quy tắc ngoại lệ để giải quyết vấn đề này.
Nếu sử dụng cái sau, làm thế nào tôi tạo ra mã của mình?
Làm cho nó trực tiếp sửa đổi các tệp văn bản? Hoặc tạo ra một ngoại lệ không tính các ký tự đặc biệt?
Có nhiều trường hợp bạn gặp lỗi trong khi mã hóa do sử dụng một số ký tự đặc biệt trong mã của bạn. Điều này có thể được gây ra do sử dụng các ký tự đặc biệt này trong các chuỗi và với các câu lệnh mã [trong trường hợp nếu các ký tự đặc biệt sai được sử dụng]. Vì vậy, chúng tôi đã nghĩ đến việc thực hiện bài viết về việc loại bỏ các ký tự loại đặc biệt này khỏi các giá trị biến loại chuỗi trong khi làm việc trong môi trường Python. Vì vậy, hãy để bắt đầu với việc mở vỏ. Để tạo mã, bạn cần một tệp Python. Cố gắng tạo một cái với lệnh Touch Touch trong vỏ. Tên tệp phải chứa phần mở rộng Python với nó. Sau khi tạo một tệp loại Python, hãy mở nó trong một số trình soạn thảo. Bạn có thể sử dụng bất kỳ trình soạn thảo tích hợp nào, tức là vim, nano và trình soạn thảo văn bản. Chúng tôi có một biên tập viên GNU Nano ở đây. Vì vậy, hãy để nhanh chóng mở nó như hình dưới đây. $ Touch Remove.py $ nano Remove.pyVí dụ 1: tham gia [] với isalnum []
$ nano remove.py
Các tập tin đã được mở thành công trong trình soạn thảo. Đã thêm đường dẫn hỗ trợ Python trong đó để làm cho nó thực thi. Chúng tôi đã khởi tạo một biến số chuỗi dài V1 với một số ký tự đặc biệt và bình thường trong đó. Câu lệnh in đã được sử dụng ở đây để hiển thị giá trị biến loại chuỗi này trên shell.
Sau này, chúng tôi đã sử dụng phương thức isalnum [] để chỉ nhận các ký tự đơn giản từ chuỗi này và bỏ qua các ký tự đặc biệt. Tất cả các ký tự bình thường sẽ được kết hợp với nhau để được lưu trong biến V2 với sự trợ giúp của phương thức. Tham gia []. Chuỗi mới được cập nhật sẽ được hiển thị trên shell với sự trợ giúp của câu lệnh in.
#!/usr/bin/python3 v1 = “Xin chào! Đây là@a v2 = ’,.
v1 = “HELLO! This, is@an’Example String:”;
print [“Original string: ”, v1];
v2 = ‘’.join[char for char in v1 if char.isalnum[]]
print [“Updated string:
”, v2];
Sau khi chạy tệp này với từ khóa Python3, chúng tôi đã có chuỗi gốc với các ký tự đặc biệt và chuỗi được cập nhật không có ký tự đặc biệt trong đó bên dưới.
Ví dụ 2: Tham gia [] với Filter []
Hãy cùng sử dụng phương thức tham gia một cách đơn giản. Mở cùng một tệp và khởi tạo một chuỗi với các ký tự bình thường và các ký tự đặc biệt. Chuỗi ban đầu sẽ được hiển thị đầu tiên. Chúng tôi đã sử dụng phương thức nối với hàm Filter [] trên biến chuỗi V1 để lọc các ký tự. Phương thức isalnum [] đã được sử dụng để chỉ thu thập các ký tự bình thường từ biến V1. Chuỗi cập nhật đã được in ra.
#!/usr/bin/python3 v1 = “Xin chào! Đây là@a v2 = ‘,.
v1 = “HELLO! This , is@an’Example String:”;
print [“Original string: ”, v1];
v2 = ‘’.join[filter[str.isalnum, v1]]
print [“Updated string: ”, v2];
Kết quả giống như chúng ta có trong ví dụ trên trong khi sử dụng phương pháp đơn giản này.
Hãy để cập nhật mã một lần nữa. Chúng tôi đã sử dụng một chuỗi dài với tất cả các ký tự đặc biệt trên bàn phím của chúng tôi. Hàm tham gia [], bộ lọc [] và isalnum [] tương tự được sử dụng một lần nữa. Các câu lệnh in đã được sử dụng để hiển thị chuỗi gốc và chuỗi được cập nhật không có ký tự đặc biệt trong đó trên shell.
#!/usr/bin/python3 v1 = Hồi A! +x-y \ z,; in [chuỗi gốc: Tiết, v1]; v2 = ‘,.
v1 = “a!b#c$d%e^f&g*h [i]j_k~l`m/n?o.p>q’ r]s[t{u}v=w+x-y\z”;
print [“Original string: ”, v1];
v2 = ‘’.join[filter[str.isalnum, v1]]
print [“Updated string: ”,
v2];
Đổi lại, chúng tôi đã có chuỗi dài ban đầu với các ký tự đặc biệt trước và sau đó chuỗi được cập nhật không có ký tự đặc biệt, tức là chỉ các ký tự trong chuỗi.
Ví dụ 3: Gói Gói RE RE với phương pháp Sub Sub
Hãy cùng sử dụng chức năng của Sub Sub của một bản loại bỏ, tức là gói Python của Python để xóa các ký tự đặc biệt. Vì vậy, hãy nhập gói RE RE trong mã trước. Khởi tạo một chuỗi và hiển thị bằng cách sử dụng câu lệnh in. Phương thức Sub Sub [] được sử dụng với cờ R R R R để xóa tất cả các ký tự đặc biệt khỏi một chuỗi ngoại trừ các ký tự được chỉ định và chuỗi được cập nhật sẽ được hiển thị.
#! Đây là@a v2 = re.sub [rv [^a-za-z0-9] ,, ,,
Import re
v1 = “HELLO! This , is@an’Example%String:”;
print [“Original string: ”, v1];
v2 =
re.sub[r”[^a-Za-Z0-9]” , “”, v1]
print [“Updated string: ”, v2];
Kết quả là, chúng tôi đã có chuỗi ban đầu và bản cập nhật.
Sự kết luận
Hướng dẫn này chứa việc triển khai bằng cách sử dụng các phương thức khác nhau để loại bỏ các ký tự đặc biệt khỏi một số giá trị chuỗi. Chúng tôi đã sử dụng gói Re re re, tham gia [], filter [] và isalnum [] để đạt được nó.
Thông tin về các Tác giả
Xin chào, tôi là một nhà văn tự do và thường viết cho Linux và các nội dung liên quan đến công nghệ khác