亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Python 提取字符串中間的文本

Python 提取字符串中間的文本

拉丁的傳說 2023-06-06 15:47:58
我想從文本中提取項目的名稱。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))


查看完整回答
反對 回復 2023-06-06
?
Helenr

TA貢獻1780條經驗 獲得超4個贊

r"5 Guys (.*?)(?=[0-9]|-)"

細節:

  • (.*?): Group1 - 盡可能少的任何字符

  • (?=[0-9]|-):條件(當我們遇到第一個數字或第一個連字符時)停止正則表達式

演示


查看完整回答
反對 回復 2023-06-06
  • 2 回答
  • 0 關注
  • 255 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號