我想從文本中提取項目的名稱。fg['Product'] = pd.Series([' 5 Guys Greasy Burger 3/5LB (24) [51656]', '5 Guys Super Strawberry Shake - (3/4) OZ (9) [5645654], '5 Guys Giant Loaded Double Cheese Burger 1/2LB Buns - 8Z Cups (22) [564654]'])我需要在 df 列中按產品分析的內容fg['Product'] = 'Greasy Burger', 'Super Strawberry Shake', 'Giant Loaded Double Cheese Burger'我嘗試了很多東西,但這讓我最接近。fg['Product'] = fg['Product'].str.strip('5 Guys').str.replace(r'\[d+\]')但這還差得遠呢。模式中的邏輯似乎是去掉“5 Guys”,然后刪除第一個數字或第一個連字符“-”之后的所有內容。就是想不通。
2 回答

倚天杖
TA貢獻1828條經驗 獲得超3個贊
您可以將正則表達式應用于r"5 Guys ([A-Za-z\s]*)"
每個條目,這會在包含所有字母字符和空格后選擇組r"5 Guys "
。如果名稱中也包含數字,您可能必須找到更復雜的模式。我使用在線正則表達式幫助程序來更輕松地創建模式(例如regex101)。
完整代碼示例:
import pandas as pd
import re
regex_pattern = r"5 Guys ([A-Za-z\s]*)"
def find_name(full_string):
match = re.search(regex_pattern, full_string)
print(match[1])
s = pd.Series([' 5 Guys Greasy Burger 3/5LB (24) [51656]', '5 Guys Super Strawberry Shake - (3/4) OZ (9) [5645654]', '5 Guys Giant Loaded Double Cheese Burger 1/2LB Buns - 8Z Cups (22) [564654]'])
s.apply(lambda x: find_name(x))
添加回答
舉報
0/150
提交
取消