Python 每日一记236>>>python提取指定字符串之间的字符串

商品信息如下:
s=‘商品编号:QG0001163 商品名称:LANEIGE兰芝臻白晶透细肤水 规格:’
‘色号:120ml;商品编号:QG0001164 商品名称:LANEIGE兰芝臻白晶透保湿乳 规格:重量:100ml;商品编号:’
‘QG0001165 商品名称:LANEIGE兰芝臻白晶透精华露 规格:重量:40ml;商品编号:QG0001167 商品名称:’
‘LANEIGE兰芝保湿滋养洁颜膏 规格:重量:150ml’

也可能是这样的字符串:
s1=‘商品编号:QG0000200 商品名称: 雅漾’

以上是一个字符串我想要提取商品名称,所有的商品名称,
比如第一个我想要得到的字符串是:
LANEIGE兰芝臻白晶透细肤水 + LANEIGE兰芝臻白晶透保湿乳 + LANEIGE兰芝臻白晶透精华露 + LANEIGE兰芝保湿滋养洁颜膏;
第二个我想要得到的字符串是:雅漾;

那么怎么办呢,对于第一个字符串可以使用正则表达式,第二个可以使用find和一般的取列表范围的方法,直接上代码了:

import pandas as pd
import numpy as np
import re
s='商品编号:QG0001163 商品名称:LANEIGE兰芝臻白晶透细肤水 规格:' \
  '色号:120ml;商品编号:QG0001164 商品名称:LANEIGE兰芝臻白晶透保湿乳 规格:重量:100ml;商品编号:' \
  'QG0001165 商品名称:LANEIGE兰芝臻白晶透精华露 规格:重量:40ml;商品编号:QG0001167 商品名称:' \
  'LANEIGE兰芝保湿滋养洁颜膏 规格:重量:150ml'

s1='商品编号:QG0000200 商品名称: 雅漾'

# data=pd.read_excel(r'C:\Users\02180085\Desktop\线上商城数据分析新版\4.6-4.12电商平台交易1.xlsx',sheet_name='元数据')
# data=pd.read_excel(r'C:\Users\02180085\Desktop\线上商城数据分析新版\电商平台3.30-4.5日交易明细_1(1).xls',sheet_name='元数据')

# 商品
def fun1(s):
    # 如果有"规格"字符串,就是用正则表达式取"商品名称""规格"之间的字符串
    # find函数返回查找的字符串的第一个索引位置,如果查找不到就返回-1,从左开始找
    if s.find('规格')!=-1:
        pattern = re.compile('商品名称:(.*?)规格', re.S)  # 表达式为: (.*?)
        list = pattern.findall(s)
        # 找到后返回的列表,转化为以“+”相连的字符串即可
        list1 = '+ '.join(list)
        return list1

    # 如果没有"规格"字符串,先查找“名称”的索引,然后加上3,就是商品的开始字符串,直到最后
    # [a:b]选择字符串索引a,b的子字符串
    else:
        return s[s.find('名称:') + 3:]

print(fun1(s))
print(fun1(s1))

在这里插入图片描述
更多可参考:
python正则表达式贪婪算法与非贪婪算法与正则表达式子模式的简单应用

发布了235 篇原创文章 · 获赞 24 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/weixin_44663675/article/details/105515664
今日推荐