Cách kiểm tra các ký tự đặc biệt trong khung dữ liệu Python

data = {'col1': [' ', '!', '"', '#', '$', '%', '&', '\'','[', ']', '*', '+', ',', '-', '.', '/', ':', ';', '', '?', '@', '[', ']', '\\', '^', '_', '`', '{', '}', '|', '~', '\n'], 'col2':['v', 'v', 'v', 'v4', 'v5', 'v6', 'v7', 'v8','v9','v10', '*', '+', ',', '-', '.', '/', ':', ';', '', '?', '@', '[', ']', '\\', '^', '_', '`', '{', '}', '|', '~', '\n'], 'col3': [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,11,1,'???#',1,1,1,1,1,1,1,1,1,1,1], 'col4': [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,11,1,1,1,1,1,1,1,1,1,1,1,1,1], 'col5': ['valid1','valid2','valid3','valid4','valid5','valid6','valid7', 'valid8','valid9','valid10','valid11','valid12', 'valid13','valid14','inval!d15','valid16','valid17','valid18', 'valid19','valid20','valid21','valid22','valid23','valid24','valid25', 'valid26', 'valid27','valid28','valid29','valid30','valid31','32','33','34']} dataframe = pd.DataFrame[data=data]

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

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ư replacefindall 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 $

Làm cách nào để kiểm tra xem một chuỗi có chứa ký tự đặc biệt trong Python không?

Cách tiếp cận. Tạo một đối tượng biểu thức chính quy [regex] gồm tất cả các ký tự đặc biệt mà chúng ta không muốn, sau đó chuyển một chuỗi vào phương thức tìm kiếm . Nếu bất kỳ một ký tự nào của chuỗi khớp với đối tượng regex thì phương thức tìm kiếm sẽ trả về một đối tượng khớp nếu không thì trả về Không có.

DF['Col'] unique[] trả về cái gì?

Khung dữ liệu[]. Phương thức unique[] được sử dụng khi chúng ta xử lý một cột duy nhất của DataFrame và trả về tất cả các phần tử duy nhất của một cột . Phương thức này trả về một DataFrame chứa các phần tử duy nhất của một cột, cùng với các nhãn chỉ mục tương ứng của chúng.

Chủ Đề