Python loại bỏ các ký tự không phải chữ và số

Đây là một blogpost ngắn. Tôi muốn ghi lại công thức này vì lợi ích của riêng tôi và hy vọng nó sẽ giúp ích cho những người khác. Tôi đang làm việc với một tập dữ liệu rất lộn xộn với một số cột chứa các ký tự không phải chữ và số như #,. ,$^*) và thậm chí cả biểu tượng cảm xúc

numpy có hai phương thức

df = pd.DataFrame({'col':['abc', 'a b c', 'a_b_c', '#$#$abc', 'abc111', 'abc111#@$@', '  abc   !!! 123', 'ABC']})
2 và
df = pd.DataFrame({'col':['abc', 'a b c', 'a_b_c', '#$#$abc', 'abc111', 'abc111#@$@', '  abc   !!! 123', 'ABC']})
3

df = pd.DataFrame({'col':['abc', 'a b c', 'a_b_c', '#$#$abc', 'abc111', 'abc111#@$@', '  abc   !!! 123', 'ABC']})
2 trả về True nếu tất cả các ký tự là chữ và số, i. e. chữ và số. tài liệu

df = pd.DataFrame({'col':['abc', 'a b c', 'a_b_c', '#$#$abc', 'abc111', 'abc111#@$@', '  abc   !!! 123', 'ABC']})
3 trả về True nếu tất cả các ký tự là bảng chữ cái (chỉ bảng chữ cái, không có số). tài liệu

import numpy as np
import pandas as pd

df = pd.DataFrame({'col':['abc', 'a b c', 'a_b_c', '#$#$abc', 'abc111', 'abc111#@$@', '  abc   !!! 123', 'ABC']})

df

col0abc1a b c2a_b_c3#$#$abc4abc1115abc111#@$@6abc. 1237ABC

Xóa ký hiệu và trả về chữ và số

def alphanum(element):
    
    return "".join(filter(str.isalnum, element))

________số 8

df

colalphanum0abcabc1a b cabc2a_b_cabc3#$#$abcabc4abc111abc1115abc111#@$@abc1116abc. 123abc1237ABCABC

Xóa các ký hiệu & số và chỉ trả về bảng chữ cái

df = pd.DataFrame({'col':['abc', 'a b c', 'a_b_c', '#$#$abc', 'abc111', 'abc111#@$@', '  abc   !!! 123', 'ABC']})
0

df = pd.DataFrame({'col':['abc', 'a b c', 'a_b_c', '#$#$abc', 'abc111', 'abc111#@$@', '  abc   !!! 123', 'ABC']})
1

colalphanumalphabets0abcabcabc1a b cabcabc2a_b_cabcabc3#$#$abcabcabc4abc111abc111abc5abc111#@$@abc111abc6abc. 123abc123abc7ABCABCABC

Thưởng. Xóa các ký hiệu & ký tự và chỉ trả lại số

df = pd.DataFrame({'col':['abc', 'a b c', 'a_b_c', '#$#$abc', 'abc111', 'abc111#@$@', '  abc   !!! 123', 'ABC']})
2

df = pd.DataFrame({'col':['abc', 'a b c', 'a_b_c', '#$#$abc', 'abc111', 'abc111#@$@', '  abc   !!! 123', 'ABC']})
3

colalphanumalphabetsnum0abcabcabc1a b cabcabc2a_b_cabcabc3#$#$abcabcabc4abc111abc111abc1115abc111#@$@abc111abc1116abc. 123abc123abc1237ABCABCABC

df = pd.DataFrame({'col':['abc', 'a b c', 'a_b_c', '#$#$abc', 'abc111', 'abc111#@$@', '  abc   !!! 123', 'ABC']})
0

df = pd.DataFrame({'col':['abc', 'a b c', 'a_b_c', '#$#$abc', 'abc111', 'abc111#@$@', '  abc   !!! 123', 'ABC']})
1

Lưu ý rằng cột

df = pd.DataFrame({'col':['abc', 'a b c', 'a_b_c', '#$#$abc', 'abc111', 'abc111#@$@', '  abc   !!! 123', 'ABC']})
6 được trả về dưới dạng
df = pd.DataFrame({'col':['abc', 'a b c', 'a_b_c', '#$#$abc', 'abc111', 'abc111#@$@', '  abc   !!! 123', 'ABC']})
7 (i. e. chuỗi) chứ không phải số, vì vậy hãy đảm bảo chuyển đổi nó thành
df = pd.DataFrame({'col':['abc', 'a b c', 'a_b_c', '#$#$abc', 'abc111', 'abc111#@$@', '  abc   !!! 123', 'ABC']})
8

Làm cách nào để xóa tất cả các ký tự không phải chữ cái khỏi một chuỗi trong Python?

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

Làm cách nào để xóa các ký tự chữ và số trong Python bằng regex?

Chúng ta cũng có thể làm điều này bằng cách sử dụng các biểu thức chính quy và isalpha(), isnumeric() . Quan trọng nhất, chúng tôi sử dụng isalnum() vì đây là cách dễ nhất để xóa các phần tử chữ và số khỏi danh sách.