zl程序教程

您现在的位置是:首页 >  数据库

当前栏目

使用“正则”实现不规则数据的中英文提取

2023-03-20 14:40:38 时间

1、对于本文的说明

  这篇文章,是帮一个群友回答的问题。他的需求是:对于中英文混合的行,只需要中文。对于全英文的行,返回整个英文行。对于全中文的行,返回整个中文行。

2、解答如下

import pandas as pd
import re


df = pd.read_excel(r"G:6Tipdm	est.xlsx")
display(df)

def func(x):
    if re.findall("[u4E00-u9FD5]+",x) == []:
        z = re.findall("[^u4E00-u9FD5,]+",x)
        z = "".join(z).strip()
        return z
    else:
        z = re.findall("[u4E00-u9FD5, ]+",x)
        z = "".join(z).strip()
        return z
    
df["aa"] = df["产品"].apply(func)
df

结果如下:

3、上述问题的扩展(中英文分开提取)

import pandas as pd
import re


df = pd.read_excel(r"G:6Tipdm	est.xlsx")
display(df)

def func(x):
    if re.findall("[u4E00-u9FD5]+",x) != []:
        z = re.findall("[^u4E00-u9FD5,]+",x)
        z = "".join(z).strip()
        return z
    elif re.findall("[u4E00-u9FD5]+",x) == []:
        z = re.findall("[^u4E00-u9FD5,]+",x)
        z = "".join(z).strip()
        return z
    else:
        return ""

def func2(x):
    if re.findall("[u4E00-u9FD5]+",x) != []:
        z = re.findall("[u4E00-u9FD5, ]+",x)
        z = "".join(z).strip()
        return z
    else:
        return ""

df["aa"] = df["产品"].apply(func)
df["bb"] = df["产品"].apply(func2)
df

结果如下: