Python正则清洗

本文将从多个方面详细阐述Python正则表达式在数据清洗中的应用。

一、基本概念

正则表达式是一种用来描述字符串模式的强大工具,可以用于匹配、查找和替换字符串。Python中的re模块提供了对正则表达式的支持。

以下是一个简单的匹配示例:

import re

pattern = r"apple"
text = "I have an apple"
result = re.search(pattern, text)
print(result.group())  # 输出: apple

上述示例中,我们使用re模块的search()函数查找字符串中的"apple",并返回第一个匹配的结果。

除了search()函数,re模块还提供了其他一些常用函数,如match()、findall()、sub()等。

二、常用函数

1、match()

match()函数用于从字符串的开头进行匹配,只有在字符串开头的位置匹配成功时才返回结果。

import re

pattern = r"apple"
text = "I have an apple"
result = re.match(pattern, text)
print(result.group())  # 输出: apple

2、findall()

findall()函数用于查找字符串中所有匹配的子串,并返回一个列表。

import re

pattern = r"apple"
text = "I have an apple, and she has an apple"
result = re.findall(pattern, text)
print(result)  # 输出: ['apple', 'apple']

3、sub()

sub()函数用于替换字符串中的匹配项。

import re

pattern = r"apple"
text = "I have an apple"
result = re.sub(pattern, "orange", text)
print(result)  # 输出: I have an orange

三、常用模式

1、字符匹配

正则表达式可以用来匹配指定的字符。

import re

pattern = r"[aeiou]"
text = "apple"
result = re.findall(pattern, text)
print(result)  # 输出: ['a', 'e']

2、重复匹配

正则表达式可以指定匹配字符的重复次数。如下所示:

import re

pattern = r"a{2,3}"
text = "banana"
result = re.findall(pattern, text)
print(result)  # 输出: ['aa']

3、分组匹配

正则表达式可以使用括号将多个字符进行分组,以便进行更复杂的匹配。

import re

pattern = r"(\d+)-(\d+)-(\d+)"
text = "2021-09-01"
result = re.match(pattern, text)
print(result.groups())  # 输出: ('2021', '09', '01')

四、常见应用场景

正则表达式在数据清洗中有着广泛的应用,以下是一些常见的应用场景:

1、去除空白字符

import re

pattern = r"\s+"
text = "  Hello   World!  "
result = re.sub(pattern, "", text)
print(result)  # 输出: HelloWorld!

2、提取URL

import re

pattern = r"(http|https)://([\w.-]+)/([\w.-]+)"
text = "Visit our website at https://www.example.com"
result = re.findall(pattern, text)
print(result)  # 输出: [('https', 'www.example.com', '')]

3、过滤特殊字符

import re

pattern = r"[^a-zA-Z0-9]"
text = "Hello, @world!"
result = re.sub(pattern, "", text)
print(result)  # 输出: Helloworld

以上仅是正则表达式在数据清洗中的一些简单应用,实际应用中可能会更加复杂,需要根据具体需求进行调整和扩展。

本文链接:https://my.lmcjl.com/post/10294.html

展开阅读全文

4 评论

留下您的评论.