import pandas as pd
# 创建示例 DataFrame
data = {'某列': ['Hello', '123', '包含空格', '包含 汉字', 'OnlyLetters']}
df = pd.DataFrame(data)
# 使用正则表达式筛选包含空格或汉字的行
pattern = r'\s|[\u4e00-\u9fa5]' # 正则表达式匹配空格或汉字
filtered_df = df[df['某列'].str.contains(pattern, regex=True, na=False)]
# 打印筛选后的 DataFrame
print(filtered_df)
逐个解释正则表达式r'\s|[\u4e00-\u9fa5]'
正则表达式 r'\s|[\u4e00-\u9fa5]'
是一个用于匹配文本模式的正则表达式。让我逐个解释它:
r
前缀:
- 在正则表达式前面添加
r
前缀表示这是一个原始字符串(raw string),这样可以避免反斜杠\
在字符串中被转义。这在正则表达式中非常有用,因为正则表达式通常包含许多反斜杠,而我们不希望它们被解释为转义字符。
\s
:
\s
是一个特殊的正则表达式元字符,表示匹配空白字符(whitespace characters),包括空格、制表符(tab)、换行符等。它用于匹配任何空白字符。
|
:
|
是正则表达式中的逻辑或运算符,用于分隔两个可能的匹配模式,表示 "或" 的关系。
[\u4e00-\u9fa5]
:
[ ]
是字符类(character class)的表示法,在其中可以包含多个字符或字符范围,它表示匹配其中任何一个字符。\u4e00-\u9fa5
是一个字符范围,表示 Unicode 编码范围内的所有汉字字符。具体来说,\u4e00
是第一个汉字("一"),\u9fa5
是最后一个汉字("龥")的 Unicode 编码。这个范围包括了中文汉字的所有字符。
综合起来,正则表达式 r'\s|[\u4e00-\u9fa5]'
的含义是匹配任何包含空白字符或者包含中文汉字字符的文本。这个正则表达式可以用来筛选包含空格或汉字的文本行。例如,在文本中,如果某一行包含空格或者包含中文汉字字符,这个正则表达式将匹配该行。