返回在空格前或空格后的某个字符或单词 - 正则表达式 Python

3

尝试使用正则表达式仅选择衣服的尺寸

我刚开始学习Python,试图通过选择包含这些尺码的行来找到它们,但是混淆了其他单词。我使用正则表达式,但未能获得所需结果。

代码:

df = pd.DataFrame({"description":["Silver","Red","GOLD","Black Leather","S","L","S","XL","XXL","Noir Matt"," 150x160L","140M"]})
df.description.apply(lambda x : x if re.findall(r"(?!\s+\d+)(S|M|X*L)(?!\s+\d+)",str(x)) else np.nan).unique()

输出:

array(['Silver', nan, 'Black Leather', 'S', 'L', 'XL', 'XXL', 'Noir Matt',
       ' 150x160L', '140M'], dtype=object)

预期结果:

array([ 'S', 'L', 'XL', 'XXL',nan], dtype=object)

你为什么要使用正则表达式? - wwii
1个回答

1

我认为你需要使用

import pandas as pd
df = pd.DataFrame({"description":["Silver","Red","GOLD","Black Leather","S","L","S","XL","XXL","Noir Matt"," 150x160L","140M"]})
df['description'][df['description'].str.match(r'^(?:S|M|X*L)$')].unique()
# => array(['S', 'L', 'XL', 'XXL'], dtype=object)

使用 Series.str.match(r'^(?:S|M|X*L)$'),您可以对完全匹配的 description 列的部分进行子集划分,其中包含 SM、零个或多个 X,以及 L 值。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接