Ký tự không phải chữ và số Python

Trong đó, search[] được sử dụng để tìm kiếm regex[] thích hợp cho chữ và số, sau đó kết quả được cắt cho đến lần xuất hiện đầu tiên của ký tự không phải chữ và số

Python3




The original string is : geeks4g!!!eeks
The resultant string : geeks4g
1

The original string is : geeks4g!!!eeks
The resultant string : geeks4g
2

The original string is : geeks4g!!!eeks
The resultant string : geeks4g
3

The original string is : geeks4g!!!eeks
The resultant string : geeks4g
4
The original string is : geeks4g!!!eeks
The resultant string : geeks4g
5

 

The original string is : geeks4g!!!eeks
The resultant string : geeks4g
6

The original string is : geeks4g!!!eeks
The resultant string : geeks4g
7____58
The original string is : geeks4g!!!eeks
The resultant string : geeks4g
0

 

The original string is : geeks4g!!!eeks
The resultant string : geeks4g
1

The original string is : geeks4g!!!eeks
The resultant string : geeks4g
2
The original string is : geeks4g!!!eeks
The resultant string : geeks4g
3
The original string is : geeks4g!!!eeks
The resultant string : geeks4g
4
The original string is : geeks4g!!!eeks
The resultant string : geeks4g
5
The original string is : geeks4g!!!eeks
The resultant string : geeks4g
6
The original string is : geeks4g!!!eeks
The resultant string : geeks4g
7

 

The original string is : geeks4g!!!eeks
The resultant string : geeks4g
8

The original string is : geeks4g!!!eeks
The resultant string : geeks4g
9
The original string is : geeks4g!!!eeks
The resultant string : geeks4g
8
The original string is : geeks4g!!!eeks
The resultant string : geeks4g
11
The original string is : geeks4g!!!eeks
The resultant string : geeks4g
12
The original string is : geeks4g!!!eeks
The resultant string : geeks4g
13

The original string is : geeks4g!!!eeks
The resultant string : geeks4g
9
The original string is : geeks4g!!!eeks
The resultant string : geeks4g
8
The original string is : geeks4g!!!eeks
The resultant string : geeks4g
16
The original string is : geeks4g!!!eeks
The resultant string : geeks4g
17
The original string is : geeks4g!!!eeks
The resultant string : geeks4g
18

The original string is : geeks4g!!!eeks
The resultant string : geeks4g
19

The original string is : geeks4g!!!eeks
The resultant string : geeks4g
20

The original string is : geeks4g!!!eeks
The resultant string : geeks4g
2______03
The original string is : geeks4g!!!eeks
The resultant string : geeks4g
23
The original string is : geeks4g!!!eeks
The resultant string : geeks4g
5
The original string is : geeks4g!!!eeks
The resultant string : geeks4g
6
The original string is : geeks4g!!!eeks
The resultant string : geeks4g
26

Đầu ra

The original string is : geeks4g!!!eeks
The resultant string : geeks4g

Thời gian phức tạp. Trên]

Không gian phụ trợ. Trên]

Phương pháp #2. Sử dụng findall[]

Đây là một cách regex khác để giải quyết vấn đề này. Trong phần này, chúng tôi trích xuất chuỗi con đầu tiên trước ký tự không phải năm bằng cách truy cập vào chỉ mục thứ 0

Tôi có một lời thú nhận những thứ đã làm. Tôi là một stickler cho tên tập tin. Tôi hết lòng tin rằng tất cả tên tệp và đường dẫn phải là

The original string is : geeks4g!!!eeks
The resultant string : geeks4g
64 hoặc
The original string is : geeks4g!!!eeks
The resultant string : geeks4g
65. Khoảng cách, cách viết hoa và các ký tự không phải chữ và số khiến tôi phát điên

Nỗi ám ảnh của tôi đến từ nhiều năm nhảy qua nhảy lại giữa Linux [lập trình, máy chủ], Windows [CAD] và MacOS [máy tính xách tay cá nhân], trong đó mỗi hệ thống có các tiêu chuẩn tên tệp thực tế khác nhau. Do đó, cuối cùng tôi đã hội tụ về các tên tệp đơn giản và hà khắc để đảm bảo việc thu thập dữ liệu dễ dàng khi tôi cần thực hiện tự động hóa

Bây giờ, tôi hiểu rằng có những lúc mức độ cứng nhắc này không hoàn toàn có ý nghĩa. Một ví dụ là trong kỹ thuật cơ khí khi làm việc với hệ thống PDM [và các bên liên quan không phải là nhà phát triển]. Thông lệ phổ biến là đặt tên tệp của bạn là

The original string is : geeks4g!!!eeks
The resultant string : geeks4g
66 [e. g. ,
The original string is : geeks4g!!!eeks
The resultant string : geeks4g
67]. Có, có khoảng trắng, nhưng miễn là lược đồ được thực thi, cơ sở dữ liệu sẽ vẫn dễ dàng phân tích cú pháp bằng máy

Nếu chúng ta mở rộng dòng suy nghĩ này từ tên tệp thành một “đường dẫn” hoặc “vị trí tài nguyên” tổng quát [e. g. , URL, tiêu đề cột dữ liệu, nhãn dữ liệu], các lược đồ nghiêm ngặt và nhất quán được nhập, dưới dạng chi tiết

Và các ký tự không chữ và số là ác. Họ chỉ gây đau đầu cho mọi người

Vệ sinh tất cả các chuỗi

Xác thực và làm sạch chuỗi đảm bảo rằng một chuỗi đáp ứng một bộ tiêu chí [xác thực] hoặc sửa đổi nó để phù hợp với lược đồ [làm sạch]. Như đã thảo luận ở trên, có rất nhiều tình huống quan trọng khi các chuỗi đến [e. g. , nhãn dữ liệu, đường dẫn, tên tệp] có thể không tuân theo tiêu chuẩn và hoạt động không mong muốn. Như đã thảo luận trước đây trong bài phân tích dữ liệu nhiệt độ và độ ẩm, các bước

The original string is : geeks4g!!!eeks
The resultant string : geeks4g
68 và
The original string is : geeks4g!!!eeks
The resultant string : geeks4g
69 của quy trình làm việc ETL thường áp dụng một số thao tác làm sạch dữ liệu. Tách các ký tự không phải chữ và số là một bước đơn giản và hữu ích cho nhiều ứng dụng xử lý dữ liệu

Như đã thấy trong bài viết trước của chúng tôi, bộ ghi dữ liệu đã cố gắng trở nên lạ mắt và sử dụng ký hiệu độ [ác] [

The original string is : geeks4g!!!eeks
The resultant string : geeks4g
20] và dấu phần trăm [
The original string is : geeks4g!!!eeks
The resultant string : geeks4g
21] cho các tiêu đề cột nhiệt độ và độ ẩm, tương ứng. Thật không may, điều này không phải là hiếm và trong khi Excel phân tích cú pháp các chuỗi này một cách bình thường, chúng tôi không thể luôn đảm bảo các hệ thống hoặc chương trình khác nhau sẽ phản ứng như thế nào. Ví dụ: trong LaTeX, dấu phần trăm là ký tự đặc biệt cho nhận xét và do đó cần phải thoát [
The original string is : geeks4g!!!eeks
The resultant string : geeks4g
22] nếu không bạn sẽ có một ngày tồi tệ

Vì vậy, hãy xem cách dọn dẹp chuỗi hiệu quả trong Python. Đưa ra một chuỗi xấu xí

The original string is : geeks4g!!!eeks
The resultant string : geeks4g
5

Chúng tôi có ba lựa chọn. hai cách Pythonic và một cách quá mức cần thiết. Cũng giả sử rằng chúng ta muốn giữ các ký tự khoảng trắng

làm sạch Pythonic. Danh sách hiểu

Một cách tiếp cận không được tối ưu hóa nhưng rõ ràng và dễ đọc là chỉ cần sử dụng để tách một chuỗi ký tự không phải chữ và số. Trong Python, đó là lý do tại sao các phương pháp hiểu danh sách hoạt động. Chúng tôi sẽ sử dụng tính năng tích hợp sẵn để kiểm tra các ký tự chữ và số và kiểm tra khoảng trắng

The original string is : geeks4g!!!eeks
The resultant string : geeks4g
6

The original string is : geeks4g!!!eeks
The resultant string : geeks4g
2

làm sạch Pythonic. Lọc

Cách tiếp cận rõ ràng thứ hai là sử dụng để lọc ra các ký tự không tuân thủ. Đây là một chức năng thú vị hữu ích trong nhiều tình huống khác nhau, đặc biệt là khi kết hợp với

Hàm

The original string is : geeks4g!!!eeks
The resultant string : geeks4g
26 khá đơn giản. nó nhận một hàm trả về
The original string is : geeks4g!!!eeks
The resultant string : geeks4g
28 và một hàm có thể lặp lại. Đối với mỗi phần tử của iterable, hàm đã cho trả về
The original string is : geeks4g!!!eeks
The resultant string : geeks4g
29 hoặc
The original string is : geeks4g!!!eeks
The resultant string : geeks4g
10. Chỉ các phần tử trả về
The original string is : geeks4g!!!eeks
The resultant string : geeks4g
29 được giữ lại

The original string is : geeks4g!!!eeks
The resultant string : geeks4g
1

The original string is : geeks4g!!!eeks
The resultant string : geeks4g
2

Làm sạch quá mức cần thiết. biểu thức chính quy

Cách tiếp cận cuối cùng của chúng tôi là sử dụng Biểu thức chính quy [regex]. Regex thực sự mạnh mẽ và có thể được sử dụng trong nhiều tình huống và trên tất cả các ngôn ngữ lập trình. Mặc dù nó có một đường cong học tập tương đối khó khăn, nhưng nó chắc chắn là điều mà hầu hết các nhà phát triển và kỹ sư nên cố gắng hiểu và làm quen với

Tuy nhiên, theo ý kiến ​​​​khiêm tốn của tôi, tùy thuộc vào ngữ cảnh, nó quá mức cần thiết

Vấn đề với regex là nó quá mạnh và quá linh hoạt. Các cách tiếp cận Pythonic được hiển thị ở trên rất dễ đọc, dễ gỡ lỗi và dễ hiểu phạm vi của chúng. Regex yêu cầu nhà phát triển kiểm tra biểu thức [trừ khi bạn là một loại trình hướng dẫn regex nào đó] và kiểm tra các trường hợp góc. Mặc dù ví dụ của bài đăng này khá tầm thường, nhưng không phải tất cả các tình huống đều có thể tha thứ được

Thành phần cốt lõi của phương pháp này là mẫu biểu thức chính quy. Đối với ví dụ này, chúng tôi sẽ sử dụng

The original string is : geeks4g!!!eeks
The resultant string : geeks4g
12. Theo giải thích của một trang web thử nghiệm regex, mẫu này bao gồm các yếu tố sau

  • The original string is : geeks4g!!!eeks
    The resultant string : geeks4g
    13. Tập hợp bị phủ định khớp với bất kỳ ký tự nào KHÔNG có trong tập hợp
  • The original string is : geeks4g!!!eeks
    The resultant string : geeks4g
    14. So khớp các ký tự số trong phạm vi đã cho
  • The original string is : geeks4g!!!eeks
    The resultant string : geeks4g
    15. Khớp các ký tự chữ cái viết thường trong phạm vi đã cho
  • The original string is : geeks4g!!!eeks
    The resultant string : geeks4g
    16. Khớp các ký tự chữ cái viết hoa trong phạm vi đã cho
  • The original string is : geeks4g!!!eeks
    The resultant string : geeks4g
    17. Khớp với bất kỳ ký tự khoảng trắng nào
  • The original string is : geeks4g!!!eeks
    The resultant string : geeks4g
    18. Khớp với một hoặc nhiều phần tử trước đó [i. e. , tập phủ định]

The original string is : geeks4g!!!eeks
The resultant string : geeks4g
2

The original string is : geeks4g!!!eeks
The resultant string : geeks4g
2

Hiệu suất

Nhưng Nicholas. Tôi không quan tâm đến khả năng đọc;

Vâng, chúng ta hãy xem. Như được hiển thị bên dưới, tôi đã hợp nhất ba cách tiếp cận thành các chức năng nhỏ để kiểm tra hiệu suất. Tôi cũng sẽ sử dụng một chuỗi Lorem Ipsum [lipsum] rất dài để kiểm tra hiệu suất, để không có kết quả sai lệch từ văn bản ngắn. Các bộ lọc sẽ loại bỏ dấu chấm, dấu phẩy và dấu chấm câu khác khỏi văn bản lipsum. Chuỗi này phải dài hơn bất kỳ URL, tiêu đề cột dữ liệu, tên tệp hoặc nhãn dữ liệu nào khác sẽ được làm sạch trong ngữ cảnh kỹ thuật

The original string is : geeks4g!!!eeks
The resultant string : geeks4g
4

Sử dụng , chúng ta có thể xác thực hiệu suất của từng phương thức

The original string is : geeks4g!!!eeks
The resultant string : geeks4g
5

The original string is : geeks4g!!!eeks
The resultant string : geeks4g
6

The original string is : geeks4g!!!eeks
The resultant string : geeks4g
60

The original string is : geeks4g!!!eeks
The resultant string : geeks4g
61

The original string is : geeks4g!!!eeks
The resultant string : geeks4g
62

The original string is : geeks4g!!!eeks
The resultant string : geeks4g
63

Vì vậy, mặc dù về mặt kỹ thuật, có vẻ như phương pháp regex là người chiến thắng, nhưng các phương pháp Pythonic đã đủ gần. Khả năng đọc quan trọng hơn [rất] tối ưu hóa hiệu suất nhỏ

hiệu suất bộ lọc dữ liệu chuỗi python regex str nhiệt độ

Nicholas Nadeau, Ph. D. , P. Anh

Nicholas Nadeau trao quyền cho các nhóm thông qua các dịch vụ CTO phân đoạn để xây dựng các công nghệ thế hệ tiếp theo. Đăng ký nhận bản tin của tôi để theo kịp các xu hướng mới nhất và khám phá các dịch vụ của tôi để bắt đầu sự đổi mới của bạn

những gì không

Ký tự không phải chữ và số là ký tự không phải là số [0-9] hoặc ký tự chữ cái . Các ký tự chữ cái được định nghĩa là a-z, A-Z, và các ký tự chữ cái trong bảng mã Latin-1 trang 850.

Làm thế nào để loại bỏ không

sub[] để xóa tất cả các ký tự không phải chữ và số khỏi một chuỗi, e. g. new_str = lại. sub[r'[\W_]', '', my_str] . Ở đó. phương thức sub[] sẽ xóa tất cả các ký tự không phải chữ và số khỏi chuỗi bằng cách thay thế chúng bằng chuỗi rỗng.

Ký tự chữ và số là gì?

Chữ và số, còn được gọi là chữ và số, là thuật ngữ bao gồm tất cả các chữ cái và chữ số trong một bộ ngôn ngữ nhất định . Trong các bố cục được thiết kế cho người dùng tiếng Anh, các ký tự chữ và số là những ký tự bao gồm tập hợp kết hợp của 26 ký tự chữ cái, từ A đến Z và 10 chữ số Ả Rập, từ 0 đến 9.

Chủ Đề