首页 > 解决方案 > 正则表达式在python中某个字符之前抓取单词

问题描述

我想从名称列中提取某个字符之前的单词并将新列附加为颜色

如果名称前没有颜色,那么我想显示空字符串

我一直在尝试在比赛前提取单词。例如,我有下表:

import pandas as pd
import re
data = ['red apple','green topaz','black grapes','white grapes']
df = pd.DataFrame(data, columns = ['Names']) 

     Names
red apple
green apple
black grapes
white grapes
normal apples
red apple

下面的代码我很treid 我正在获取部分输出

df['Names'].apply(lambda x: ' '.join(re.findall(r'(\w+)\s+apple', x)))

df['Names'].apply(lambda x: ' '.join(re.findall(r'(\w+)\s+apple|grapes', x)))

期望的输出:

Names           color
red apple       red
green apple     green
black grapes    black
white grapes    white
normal apples
red apple       red  

请帮我解决这个问题

标签: pythonregexpython-3.x

解决方案


我找到了这个解决方案:给了我一个 color_column 像 ['red', 'green', 'black', 'white', '']

import re
data = ['red apple','green topaz','black grapes','white grapes','apples']

colors_column = list(map(lambda x: ' '.join(re.findall(r'(\S\w+)\s+\w+', x)) ,data))

推荐阅读