Tôi đã từng gặp vấn đề chính xác này, sự khác biệt duy nhất là tôi không thể nhập bất cứ thứ gì hoặc sử dụng Regex.
Để giải quyết vấn đề của tôi, tôi đã tạo một danh sách chứa tất cả các giá trị tôi muốn giữ:
values = list["abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 "]
Sau đó, tôi đã tạo một hàm sẽ lặp qua từng mục trong chuỗi và nếu nó không có trong danh sách
print[remover["H!e£l$l%o^ W&o*r[l]d!:]"]]
0, nó sẽ xóa [thay thế] nó khỏi chuỗi:def remover[my_string = ""]:
for item in my_string:
if item not in values:
my_string = my_string.replace[item, ""]
return my_string
Ví dụ: mã sau:
print[remover["H!e£l$l%o^ W&o*r[l]d!:]"]]
Nên đầu ra:
'Hello World'
Chắc chắn đây không phải là cách tốt nhất để làm điều này nhưng với hoàn cảnh, đó là một cách nhanh chóng và dễ dàng để hoàn thành công việc.
Lưu ý: Bạn có thể thay thế các mục trong danh sách
0 bằng cách thay đổi print[remover["H!e£l$l%o^ W&o*r[l]d!:]"]]
2 thành print[remover["H!e£l$l%o^ W&o*r[l]d!:]"]]
3. you can replace the items that are in the print[remover["H!e£l$l%o^ W&o*r[l]d!:]"]]
print[remover["H!e£l$l%o^ W&o*r[l]d!:]"]]
0 list by changing print[remover["H!e£l$l%o^ W&o*r[l]d!:]"]]
2 to print[remover["H!e£l$l%o^ W&o*r[l]d!:]"]]
3.Lưu ý: Tôi không được phép sử dụng hằng số chuỗi vì gói
4 phải được nhập để sử dụng chúng. I wasn't allowed to use string constants because the print[remover["H!e£l$l%o^ W&o*r[l]d!:]"]]
print[remover["H!e£l$l%o^ W&o*r[l]d!:]"]]
4 package has to be imported to use them.Chúc may mắn.
Xem thảo luận
Cải thiện bài viết
Lưu bài viết
Xem thảo luận
Cải thiện bài viết
Lưu bài viết
Đọc
Bàn luận
This is one of the way in which this task can be performed. In this, we compare the string for all elements being alphabets or space only.
Python3
Đôi khi, trong khi kiểm tra độ tin cậy của chuỗi là một phần chỉ chứa bảng chữ cái, một ngoại lệ của không gian phải được đề cập rõ ràng và trở thành một vấn đề. Điều này có thể xảy ra trong các miền liên quan đến dữ liệu. Hãy thảo luận về những cách nhất định trong đó nhiệm vụ này có thể được thực hiện.
Phương thức số 1: Sử dụng tất cả [] + ISSPACE [] + isalpha [] & nbsp; Đây là một trong những cách mà nhiệm vụ này có thể được thực hiện. Trong đó, chúng tôi so sánh chuỗi cho tất cả các yếu tố chỉ là bảng chữ cái hoặc không gian.
print[remover["H!e£l$l%o^ W&o*r[l]d!:]"]]
5 print[remover["H!e£l$l%o^ W&o*r[l]d!:]"]]
6print[remover["H!e£l$l%o^ W&o*r[l]d!:]"]]
7print[remover["H!e£l$l%o^ W&o*r[l]d!:]"]]
8 print[remover["H!e£l$l%o^ W&o*r[l]d!:]"]]
9'Hello World'
0'Hello World'
1'Hello World'
2 'Hello World'
3 'Hello World'
4
5'Hello World'
8 print[remover["H!e£l$l%o^ W&o*r[l]d!:]"]]
7'Hello World'
8 print[remover["H!e£l$l%o^ W&o*r[l]d!:]"]]
9'Hello World'
The original string is : geeksforgeeks is best for geeks
Does String contain only space and alphabets : True
0 The original string is : geeksforgeeks is best for geeks
Does String contain only space and alphabets : True
1
1'Hello World'
The original string is : geeksforgeeks is best for geeks
Does String contain only space and alphabets : True
3__
The original string is : geeksforgeeks is best for geeks Does String contain only space and alphabets : True
0'Hello World'
1'Hello World'
The original string is : geeksforgeeks is best for geeks
Does String contain only space and alphabets : True
4
3 'Hello World'
The original string is : geeksforgeeks is best for geeks
Does String contain only space and alphabets : True
6The original string is : geeksforgeeks is best for geeks
Does String contain only space and alphabets : True
7
This problem can also be solved by employing regex to include only space and alphabets in a string.
Python3
Đôi khi, trong khi kiểm tra độ tin cậy của chuỗi là một phần chỉ chứa bảng chữ cái, một ngoại lệ của không gian phải được đề cập rõ ràng và trở thành một vấn đề. Điều này có thể xảy ra trong các miền liên quan đến dữ liệu. Hãy thảo luận về những cách nhất định trong đó nhiệm vụ này có thể được thực hiện.
Phương thức số 1: Sử dụng tất cả [] + ISSPACE [] + isalpha [] & nbsp; Đây là một trong những cách mà nhiệm vụ này có thể được thực hiện. Trong đó, chúng tôi so sánh chuỗi cho tất cả các yếu tố chỉ là bảng chữ cái hoặc không gian.
print[remover["H!e£l$l%o^ W&o*r[l]d!:]"]]
5 print[remover["H!e£l$l%o^ W&o*r[l]d!:]"]]
6print[remover["H!e£l$l%o^ W&o*r[l]d!:]"]]
7print[remover["H!e£l$l%o^ W&o*r[l]d!:]"]]
8 print[remover["H!e£l$l%o^ W&o*r[l]d!:]"]]
9'Hello World'
0'Hello World'
1'Hello World'
2 'Hello World'
3 'Hello World'
4
5'Hello World'
8 print[remover["H!e£l$l%o^ W&o*r[l]d!:]"]]
7'Hello World'
8 print[remover["H!e£l$l%o^ W&o*r[l]d!:]"]]
9'Hello World'
The original string is : geeksforgeeks is best for geeks
Does String contain only space and alphabets : True
0 The original string is : geeksforgeeks is best for geeks
Does String contain only space and alphabets : True
1
1'Hello World'
The original string is : geeksforgeeks is best for geeks
Does String contain only space and alphabets : True
3__
The original string is : geeksforgeeks is best for geeks Does String contain only space and alphabets : True
'Hello World'
0'Hello World'
1The original string is : geeksforgeeks is best for geeks Does String contain only space and alphabets : True4
'Hello World'
3 The original string is : geeksforgeeks is best for geeks Does String contain only space and alphabets : True6
The original string is : geeksforgeeks is best for geeks Does String contain only space and alphabets : True7
Đầu ra: & nbsp;O[n]
Phương pháp số 1: Sử dụng Regex & NBSP; vấn đề này cũng có thể được giải quyết bằng cách sử dụng Regex để chỉ bao gồm không gian và bảng chữ cái trong một chuỗi.O[n]
Tôi có một lời thú nhận để thực hiện: Tôi là một người gắn bó với tên tệp. Tôi hết lòng tin rằng tất cả các tên tệp và đường dẫn nên là
'Temperature C'
0 hoặc 'Temperature C'
1. Không gian, viết hoa và các nhân vật không phải là vô sinh khiến tôi phát điên.Nỗi ám ảnh của tôi xuất phát từ những năm tôi nhảy qua 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ệp thực tế khác nhau. Do đó, cuối cùng tôi đã hội tụ về tên tệp đơn giản và Draconia để đảm bảo dễ dàng lấy dữ liệu khi tôi cần tự động hóa.
Bây giờ, tôi hiểu 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ơ học khi làm việc với hệ thống PDM [và các bên liên quan không phát triển]. Thực tiễn phổ biến là có tên tệp của bạn là
'Temperature C'
2 [ví dụ: 'Temperature C'
3]. Có, có không gian, nhưng miễn là lược đồ được thực thi, cơ sở dữ liệu vẫn sẽ dễ dàng bị phân tích máy.Nếu chúng ta mở rộng dòng suy nghĩ này từ tên tệp sang một đường dẫn tổng quát hoặc vị trí tài nguyên của Hồi giáo [ví dụ: 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 là nhập, như ma quỷ trong các chi tiết.
Và các nhân vật không phải là người vô sinh là xấu xa. Chúng chỉ gây đau đầu cho tất cả mọi người.
Vệ sinh tất cả các chuỗi
Xác thực và vệ sinh chuỗi đảm bảo rằng một chuỗi đáp ứng một tập hợp các tiêu chí [xác thực] hoặc sửa đổi nó để phù hợp với lược đồ [vệ sinh]. Như đã thảo luận ở trên, có rất nhiều tình huống quan trọng trong đó các chuỗi đến [ví dụ: nhãn dữ liệu, đường dẫn, tên tệp] có thể không phù hợp với tiêu chuẩn và hoạt động bất ngờ. 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
'Temperature C'
4 và 'Temperature C'
5 của quy trình làm việc ETL thường áp dụng một số việc làm sạch dữ liệu. Chạy các ký tự không phải 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 để được ưa thích và sử dụng ký hiệu [ác] [
'Temperature C'
6] và dấu phần trăm ['Temperature C'
7] 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ác chuỗi này một cách bình thường, chúng ta có thể luôn luôn đảm bảo cách các hệ thống hoặc chương trình khác nhau sẽ phản ứng. Ví dụ, trong latex, dấu hiệu phần trăm là nhân vật đặc biệt cho các bình luận, và do đó cần phải được thoát ra ['Temperature C'
8] khác mà bạn sẽ có một ngày tồi tệ.Vì vậy, hãy để một cái nhìn về cách làm sạch các chuỗi hiệu quả trong Python. Cho một chuỗi xấu xí:
ugly_string = "Temperature [°C]"
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. Hãy cùng giả sử rằng chúng tôi muốn giữ các ký tự khoảng trắng.
Làm sạch Pythonic: Danh sách hiểu biết
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 danh sách hiểu để loại bỏ một chuỗi các ký tự không phải là đồngumeric. Trong Python, một đối tượng
The original string is : geeksforgeeks is best for geeks Does String contain only space and alphabets : True6 là một loại trình tự, đó là lý do tại sao các phương thức hiểu danh sách hoạt động. Chúng tôi sẽ sử dụng
# use filter to keep just alphanumeric characters
filter[str.isalnum, ugly_string]
# or use filter to return alphanumeric and whitespace
clean_string = filter[lambda x: x.isalnum[] or x.isspace[], ugly_string]
# filter returns a generator, so we need to re-join the string
clean_string = "".join[clean_string]
clean_string
0 tích hợp để kiểm tra các ký tự chữ và số và # use filter to keep just alphanumeric characters
filter[str.isalnum, ugly_string]
# or use filter to return alphanumeric and whitespace
clean_string = filter[lambda x: x.isalnum[] or x.isspace[], ugly_string]
# filter returns a generator, so we need to re-join the string
clean_string = "".join[clean_string]
clean_string
1 để kiểm tra khoảng trắng.# list comprehension that filters out bad characters
clean_string = [s for s in ugly_string if s.isalnum[] or s.isspace[]]
# rejoin intermediate list into a string
clean_string = "".join[clean_string]
clean_string
'Temperature C'
Làm sạch Pythonic: Bộ lọc
Cách tiếp cận rõ ràng thứ hai là sử dụng hàm
# use filter to keep just alphanumeric characters
filter[str.isalnum, ugly_string]
# or use filter to return alphanumeric and whitespace
clean_string = filter[lambda x: x.isalnum[] or x.isspace[], ugly_string]
# filter returns a generator, so we need to re-join the string
clean_string = "".join[clean_string]
clean_string
2 tích hợp để lọc ra các ký tự không tuân thủ. Đây là một chức năng thú vị mà hữu ích trong một loạt các kịch bản, đặc biệt là khi kết hợp với các chức năng Lambda.Hàm
# use filter to keep just alphanumeric characters
filter[str.isalnum, ugly_string]
# or use filter to return alphanumeric and whitespace
clean_string = filter[lambda x: x.isalnum[] or x.isspace[], ugly_string]
# filter returns a generator, so we need to re-join the string
clean_string = "".join[clean_string]
clean_string
2 khá đơn giản: nó có một hàm trả về # list comprehension that filters out bad characters
clean_string = [s for s in ugly_string if s.isalnum[] or s.isspace[]]
# rejoin intermediate list into a string
clean_string = "".join[clean_string]
clean_string
0 và một điều không thể điều chỉnh được. Đối với mỗi yếu tố của có thể lặp lại, hàm đã cho trả về # use filter to keep just alphanumeric characters
filter[str.isalnum, ugly_string]
# or use filter to return alphanumeric and whitespace
clean_string = filter[lambda x: x.isalnum[] or x.isspace[], ugly_string]
# filter returns a generator, so we need to re-join the string
clean_string = "".join[clean_string]
clean_string
5 hoặc # use filter to keep just alphanumeric characters
filter[str.isalnum, ugly_string]
# or use filter to return alphanumeric and whitespace
clean_string = filter[lambda x: x.isalnum[] or x.isspace[], ugly_string]
# filter returns a generator, so we need to re-join the string
clean_string = "".join[clean_string]
clean_string
6. Chỉ các yếu tố trả lại # use filter to keep just alphanumeric characters
filter[str.isalnum, ugly_string]
# or use filter to return alphanumeric and whitespace
clean_string = filter[lambda x: x.isalnum[] or x.isspace[], ugly_string]
# filter returns a generator, so we need to re-join the string
clean_string = "".join[clean_string]
clean_string
5 được giữ.# use filter to keep just alphanumeric characters
filter[str.isalnum, ugly_string]
# or use filter to return alphanumeric and whitespace
clean_string = filter[lambda x: x.isalnum[] or x.isspace[], ugly_string]
# filter returns a generator, so we need to re-join the string
clean_string = "".join[clean_string]
clean_string
'Temperature C'
Làm sạch quá mức: Regex
Cách tiếp cận cuối cùng của chúng tôi là sử dụng các 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à thứ mà hầu hết các nhà phát triển và kỹ sư nên thử hiểu và làm quen.
Tuy nhiên, theo ý kiến khiêm tốn của tôi, tùy thuộc vào bối cảnh, nó quá mức cần thiết.
Vấn đề với Regex là nó quá mạnh mẽ và quá linh hoạt. Các phương pháp 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 phù thủy Regex] và kiểm tra các trường hợp các góc. Mặc dù ví dụ bài đăng này khá tầm thường, nhưng không phải tất cả các kịch bản sẽ được tha thứ.
Thành phần cốt lõi của phương pháp này là mẫu Regex. Trong ví dụ này, chúng tôi sẽ sử dụng
# use filter to keep just alphanumeric characters
filter[str.isalnum, ugly_string]
# or use filter to return alphanumeric and whitespace
clean_string = filter[lambda x: x.isalnum[] or x.isspace[], ugly_string]
# filter returns a generator, so we need to re-join the string
clean_string = "".join[clean_string]
clean_string
8. Như được giải thích bởi một trang web kiểm tra regex, mẫu này bao gồm các yếu tố sau:
9: tập hợp được phủ định phù hợp với bất kỳ ký tự nào không trong tập hợp# use filter to keep just alphanumeric characters filter[str.isalnum, ugly_string] # or use filter to return alphanumeric and whitespace clean_string = filter[lambda x: x.isalnum[] or x.isspace[], ugly_string] # filter returns a generator, so we need to re-join the string clean_string = "".join[clean_string] clean_string
00: khớp các ký tự số trong phạm vi đã chodef remover[my_string = ""]: for item in my_string: if item not in values: my_string = my_string.replace[item, ""] return my_string
01: khớp các ký tự chữ cái viết thường trong phạm vi đã chodef remover[my_string = ""]: for item in my_string: if item not in values: my_string = my_string.replace[item, ""] return my_string
02: Phù hợp với các ký tự chữ cái viết hoa trong phạm vi đã chodef remover[my_string = ""]: for item in my_string: if item not in values: my_string = my_string.replace[item, ""] return my_string
03: khớp với bất kỳ ký tự khoảng trắng nàodef remover[my_string = ""]: for item in my_string: if item not in values: my_string = my_string.replace[item, ""] return my_string
3: khớp với một hoặc nhiều phần tử trước đó [tức là tập hợp bị phủ định]'Hello World'
def remover[my_string = ""]:
for item in my_string:
if item not in values:
my_string = my_string.replace[item, ""]
return my_string
1'Temperature C'
Màn biểu diễn
Nhưng Nicholas! Tôi không quan tâm đến khả năng đọc; Tôi chỉ quan tâm đến hiệu suất tối ưu hóa!
Chà, hãy để một cái nhìn. Như được hiển thị dưới đây, 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ẽ tước thời gian, dấu phẩy và dấu câu khác từ văn bản Lipsum. Chuỗi này nên 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 khác sẽ được vệ sinh trong bối cảnh kỹ thuật.
def remover[my_string = ""]:
for item in my_string:
if item not in values:
my_string = my_string.replace[item, ""]
return my_string
3Sử dụng lệnh Jupyter Magic tích hợp
def remover[my_string = ""]:
for item in my_string:
if item not in values:
my_string = my_string.replace[item, ""]
return my_string
05, chúng ta có thể xác thực hiệu suất của từng phương pháp:def remover[my_string = ""]:
for item in my_string:
if item not in values:
my_string = my_string.replace[item, ""]
return my_string
4def remover[my_string = ""]:
for item in my_string:
if item not in values:
my_string = my_string.replace[item, ""]
return my_string
5def remover[my_string = ""]:
for item in my_string:
if item not in values:
my_string = my_string.replace[item, ""]
return my_string
6def remover[my_string = ""]:
for item in my_string:
if item not in values:
my_string = my_string.replace[item, ""]
return my_string
7def remover[my_string = ""]:
for item in my_string:
if item not in values:
my_string = my_string.replace[item, ""]
return my_string
8def remover[my_string = ""]:
for item in my_string:
if item not in values:
my_string = my_string.replace[item, ""]
return my_string
9Vì vậy, trong khi có vẻ như phương pháp Regex về mặt kỹ thuật là người chiến thắng, các phương pháp Pythonic đủ gần. Khả năng đọc là quan trọng hơn [rất] tối ưu hóa hiệu suất nhỏ.