Bài viết này sẽ thảo luận về các cách khác nhau để kiểm tra xem một chuỗi có bắt đầu bằng một hoặc nhiều ký tự đặc biệt trong Python hay không
Mục lục
Kiểm tra xem Chuỗi có bắt đầu bằng bất kỳ ký tự đặc biệt nào bằng Regex không
Trong Python, mô-đun regex cung cấp chức năng tìm kiếm[str, pattern]. Nó chấp nhận một chuỗi và mẫu biểu thức chính quy làm đối số. Sau đó, nó quét qua chuỗi và tìm mẫu biểu thức chính quy đã cho. Nếu tìm thấy một kết quả phù hợp với mẫu, thì nó sẽ trả về đối tượng Match; . Chúng ta có thể sử dụng điều này để kiểm tra xem một chuỗi có bắt đầu bằng bất kỳ ký tự đặc biệt nào hay không. Đối với điều đó, chúng tôi sẽ sử dụng mẫu biểu thức chính quy sau,
import string pattern = r'^[' + string.punctuation + ']+'
In Python, the string module provides a variable punctuation that contains all the special characters i.e. r”””!”#$%&'[]*+,-./:;[email protected][]^_`{|}~”””. We used that string to create the regex pattern. This pattern checks if the string starts with one or more special characters. Let’s see some examples,
ví dụ 1
quảng cáo
import re import string # Create a regex pattern to match a string # that starts with one or more special characters pattern = r'^[' + string.punctuation + ']+' sample_str = "$sample string" # Check if string starts with special characters if re.search[pattern, sample_str] is not None: print["The String starts with special characters"] else: print["The String do not starts with special characters"]
đầu ra
The String starts with special characters
Chuỗi của chúng tôi có một ký tự đặc biệt ở đầu và mẫu biểu thức chính quy đã phát hiện thành công ký tự đó
Bạn có thể sử dụng cú pháp cơ bản sau để xóa các ký tự đặc biệt khỏi một cột trong DataFrame của gấu trúc.df['my_column'] = df['my_column'].str.replace['\W', '', regex=True]
Ví dụ cụ thể này sẽ xóa tất cả các ký tự trong my_column không phải là chữ cái hoặc số
Ví dụ sau đây cho thấy cách sử dụng cú pháp này trong thực tế
Ví dụ. Xóa các ký tự đặc biệt khỏi cột trong Pandas
Giả sử chúng ta có DataFrame gấu trúc sau chứa thông tin về các cầu thủ bóng rổ khác nhau
import pandas as pd #create DataFrame df = pd.DataFrame[{'team' : ['Mavs$', 'Nets', 'Kings!!', 'Spurs%', '&Heat&'], 'points' : [12, 15, 22, 29, 24]}] #view DataFrame print[df] team points 0 Mavs$ 12 1 Nets 15 2 Kings!! 22 3 Spurs% 29 4 &Heat& 24
Giả sử chúng tôi muốn xóa tất cả các ký tự đặc biệt khỏi các giá trị trong cột nhóm
Chúng ta có thể sử dụng cú pháp sau để làm như vậy
#remove special characters from team column df['team'] = df['team'].str.replace['\W', '', regex=True] #view updated DataFrame print[df] team points 0 Mavs 12 1 Nets 15 2 Kings 22 3 Spurs 29 4 Heat 24
Lưu ý rằng tất cả các ký tự đặc biệt đã bị xóa khỏi các giá trị trong cột nhóm
Ghi chú. Regex \W được sử dụng để tìm tất cả các ký tự không phải là từ, tôi. e. các ký tự không phải là chữ cái hoặc số
Trong ví dụ này, chúng tôi đã thay thế từng ký tự không phải từ bằng một giá trị trống tương đương với việc xóa các ký tự không phải từ
Các phương thức chuỗi trên Chỉ mục đặc biệt hữu ích để dọn dẹp hoặc chuyển đổi các cột DataFrame. Chẳng hạn, bạn có thể có các cột có khoảng trắng ở đầu hoặc cuối
In [9]: df = pd.DataFrame[randn[3, 2], columns=[' Column A ', ' Column B '], ...: index=range[3]] ...: In [10]: df Out[10]: Column A Column B 0 0.017428 0.039049 1 -2.240248 0.847859 2 -1.342107 0.368828
Vì df. cột là một đối tượng Chỉ mục, chúng ta có thể sử dụng . trình truy cập str accessor
In [11]: df.columns.str.strip[] Out[11]: Index[[u'Column A', u'Column B'], dtype='object'] In [12]: df.columns.str.lower[] Out[12]: Index[[u' column a ', u' column b '], dtype='object']
Các phương thức chuỗi này sau đó có thể được sử dụng để dọn dẹp các cột khi cần thiết. Ở đây, chúng tôi đang xóa các khoảng trắng ở đầu và cuối, viết thường tất cả các tên và thay thế mọi khoảng trắng còn lại bằng dấu gạch dưới
________số 8_______
Tách và thay thế chuỗi
Các phương thức như split trả về một Chuỗi danh sách.
In [15]: s2 = pd.Series[['a_b_c', 'c_d_e', np.nan, 'f_g_h']] In [16]: s2.str.split['_'] Out[16]: 0 [a, b, c] 1 [c, d, e] 2 NaN 3 [f, g, h] dtype: object
Có thể truy cập các phần tử trong danh sách phân tách bằng cách sử dụng get hoặc [] notation:
In [17]: s2.str.split['_'].str.get[1] Out[17]: 0 b 1 d 2 NaN 3 g dtype: object In [18]: s2.str.split['_'].str[1] Out[18]: 0 b 1 d 2 NaN 3 g dtype: object
Dễ dàng mở rộng phần này để trả về DataFrame bằng cách sử dụng mở rộng .
In [19]: s2.str.split['_', expand=True] Out[19]: 0 1 2 0 a b c 1 c d e 2 NaN None None 3 f g h
Cũng có thể giới hạn số lần chia
In [20]: s2.str.split['_', expand=True, n=1] Out[20]: 0 1 0 a b_c 1 c d_e 2 NaN None 3 f g_h
rsplit tương tự như split ngoại trừ nó hoạt động theo hướng ngược lại, i. e. , từ cuối chuỗi đến đầu chuỗi.
In [21]: s2.str.rsplit['_', expand=True, n=1] Out[21]: 0 1 0 a_b c 1 c_d e 2 NaN None 3 f_g h
Các phương thức như replace và findall nhận các biểu thức chính quy, .
In [5]: idx = pd.Index[[' jack', 'jill ', ' jesse ', 'frank']] In [6]: idx.str.strip[] Out[6]: Index[[u'jack', u'jill', u'jesse', u'frank'], dtype='object'] In [7]: idx.str.lstrip[] Out[7]: Index[[u'jack', u'jill ', u'jesse ', u'frank'], dtype='object'] In [8]: idx.str.rstrip[] Out[8]: Index[[u' jack', u'jill', u' jesse', u'frank'], dtype='object']0
Một số thận trọng phải được thực hiện để ghi nhớ các biểu thức thông thường. Ví dụ: đoạn mã sau sẽ gây rắc rối vì ý nghĩa biểu thức chính quy của $