python re爬虫_Python爬虫实践 —— Regular Expressions Python re模块

Python re 模块,提供了 Perl 风格的正则表达式模式。re 模块使 Python 语言拥有全部的正则表达式功能。

(1)re.match 函数

match函数

从字符串起始位置匹配一个模式。

语法: re.match(pattern,string,flags=0)

parttern 匹配模式 string 要匹配的字符串 flag 限定修正符re.i re.g re.m

(2)re.search 函数

search函数

扫描整个字符串并返回第一个成功的匹配。

语法:re.search(pattern,string,flags=0)

parttern 匹配模式 string 要匹配的字符串 flag 限定修正符re.i re.g re.m

****** re.match与re.search的区别 ******

re.match只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回None;而re.search匹配整个字符串,直到找到一个匹配。

(3)re.sub函数

sub函数

Python 的re模块提供了re.sub用于替换字符串中的匹配项。

语法:re.sub(pattern,repl,string,count=0,flags=0)

parttern 匹配模式  repl : 替换的字符串,也可为一个函数

string 要匹配的字符串 count  模式匹配后替换的最大次数,默认 0 表示替换所有的匹配。flag 限定修正符 re.i re.g re.m

例:

1. # repl为替换字符串,除去 “#”号 后面的注释

phone= "2004-959-559 # 这是一个电话号码"

num= re.sub(r'#.*$', "", phone)

print("电话号码 : ", num)

>>>电话号码:2004-959-559

2. # repl为函数,将匹配的字符串内的数字乘于 2,捕获组别名引用

defdouble(matched):

value= int(matched.group('value'))

returnstr(value* 2)

s= 'A23G4HFD567'

print(re.sub('(?P\d+)', double, s))  # 别名引用匹配模式,别名为value

>>>A46G8HFD1134

3.捕获组可下标标号引用

p = re.compile(r'(\d+)abcd(\d+)')

result = re.sub(p, r'\2invert\1', '12345abcd67890') # 数组下标引用匹配模式,\1 是第一个匹配到的数字组

print(result)

>>>67890invert12345

(4)re.complie 函数

complie函数

compile 函数用于编译正则表达式,生成一个正则表达式( Pattern )对象,供 match() 和 search() 这两个函数使用。

语法:re.compile(pattern[,flags])

(5)re.findall 函数

findall函数

findall 函数在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果没有找到匹配的,则返回空列表。

语法:re.findall(string[,pos[,endpos]])

string 待匹配的字符串,可设置匹配起始位置。

(6)re.spilt 函数

spilt函数

split 方法按照能够匹配的子串将字符串分割后返回列表。

语法:re.split(pattern,string[,maxsplit=0,flags=0])

maxsplit为分隔次数 1分隔一次,默认为 0,不限制次数。

对于一个找不到匹配的字符串而言,split 不会对其作出分割

(7)正则表达式对象、分组与匹配方法

正则表达式对象

re.RegexObject

re.compile() 返回 RegexObject 对象。

re.MatchObject

. match() 和 . search() 可返回 MatchObject对象。

group() 返回被 RE 匹配的字符串。

. start() 返回匹配开始的位置

. end() 返回匹配结束的位置

. span() 返回一个元组包含匹配 (开始,结束) 的位置

re.compile 为RegexObject编译对象,可以由re.compile(r'模式不用转义')获得。

可以接.match()或 .search()方法获得MatchObject对象,或者.finditer()方法可获得包括MathObject元素的迭代器,

还可接.findall()获得匹配串列表 (list)

MatchObject对象可以通过以下方法访问内容:

.group()  == .group(0) 返回匹配模式成功的整个子串

. group(n) 返回第n个分组匹配成功的子串

. span(0) 返回匹配成功的整个子串的起始位置索引

. span(n) 返回返回第n个分组匹配成功的子串起始位置索引

.start(0) 方法用于获取分组匹配的子串在整个字符串中的起始位置(子串第一个字符的索引),参数默认值为 0

. end(0)方法用于获取分组匹配的子串在整个字符串中的结束位置(子串最后一个字符的索引+1),参数默认值为 0

.groups() 返回匹配所有分组成功的各个子串的元组表示

findall函数匹配规则及结果:

注意: match 和 search 是匹配一次 findall 匹配所有。

1.已匹配成功的字符串,不在参与下次匹配

示例:r=re.findall("\d+\w\d+","a2b3c4d5")  >>> ['2b3', '4d5']   # 3c4不会重复参与匹配

2.无匹配规则返回的是一个比原始字符串多一位的空字符串列表

示例:r=re.findall("","a2b3c4d5")  >>> ['', '', '', '', '', '', '', '', ''] # 9 字符空串

3.组匹配时尽量避免用*否则会有可能匹配出空字符串

示例:r=re.findall("(ca)*","ca2b3caa4d5")  >>> ['ca', '', '', '', 'ca', '', '', '', '', ''] # 用*号会匹配出空字符

4.无分组匹配:匹配所有合规则的字符串,匹配到的字符串放到一个列表中。单 | 符号不属于分组匹配

示例:r=re.findall("a\w+","ca2b3 caa4d5") >>> ['a2b3', 'aa4d5'] # 匹配所有合规则的字符串,匹配到的字符串放入列表

5.有分组匹配:只将匹配到的字符串里,组的部分放到列表里返回,相当于groups()方法

示例:r=re.findall("a(\w+)","ca2b3 caa4d5") >>> ['2b3', 'a4d5'] # 返回匹配到组里的内容返回

6.多个分组:只将匹配到的字符串里,组的部分放到一个元组中,最后将所有元组放到一个列表里返回

示例:r=re.findall("(a)(\w+)","ca2b3 caa4d5") >>> [('a', '2b3'), ('a', 'a4d5')] # 返回的是多维数组

7.分组中有分组:只将匹配到的字符串里,组的部分放到一个元组中,先将包含有组的组,看作一个整体也就是一个组,

把这个整体组放入一个元组里,然后在把组里的组放入一个元组,最后将所有组放入一个列表返回

示例:r=re.findall("(a)(\w+(b))","ca2b3 caa4b5") >>> [('a', '2b', 'b'), ('a', 'a4b', 'b')] # 返回的是多维数组

8. ?:在有分组的情况下findall()函数,不只拿分组里的字符串,拿所有匹配到的字符串。

示例:r=re.findall("a(?:\w+)","a2b3 a4b5 edd") >>> ['a2b3', 'a4b5'] # ?:在有分组的情况下,不只拿分组里的字符串,拿所有匹配到的字符串

(8)字符串分割和替换

字符串分割

line = 'aaa bbb ccc;ddd eee,fff'

单字符分割

>>> re.split(r';',line)

['aaa bbb ccc', 'ddd\teee,fff']

两个字符以上切割需要放在 [ ]中

>>> re.split(r'[;,]',line)

['aaa bbb ccc', 'ddd\teee', 'fff']

所有空白字符切割

>>> re.split(r'[;,\s]',line)

['aaa', 'bbb', 'ccc', 'ddd', 'eee', 'fff']

使用括号捕获分组,默认保留分割符

>>> re.split(r'([;])',line)

['aaa bbb ccc', ';', 'ddd\teee,fff']

不想保留分隔符,以(?: ...)的形式指定

>>> re.split(r'(?:[;])',line)

['aaa bbb ccc', 'ddd\teee,fff']

字符串替换

两种表现内编组分组引用 \g和\g

方式1:没有用表现内方式,结果为把better丢失

方式2:使用了表现内方式,把原来内容保留下来把better保留下来了

方式3:在方式2的基础上,把序号改为分组名称

sub可以替换的时候,把匹配到的分组内容组内引用进行互换

subn替换并返回替换数量

(9)模块级别操作

re.purge()清理正则缓存和re.escape()逃逸字符

正则在模式编译时候,编译好的模式会缓存到内存中,如果想某个时间清空之前的缓存,可以使用purge方法

逃逸字符,忽略以前原有的功能意义如行开始标志^、或行结尾标志$、问号等

例如:文本里面本身含有^,如果想匹配该字符

本文搬运转载总结自

菜鸟教程 Python3正则表达式教程

https://www.runoob.com/python3/python3-reg-expressions.html

简书 全栈coder Python 中re.split()方法

https://www.jianshu.com/p/41939d338ccb

博客园 艺杰兮 python系列教程等

https://www.cnblogs.com/yijiexi/p/11165257.html

https://www.cnblogs.com/yijiexi/p/11165306.html

https://www.cnblogs.com/yijiexi/p/11165337.html

https://www.cnblogs.com/yijiexi/p/11165387.html

Python 之正则表达式(Regular Expressions in Python) Python 的 re 模块提供了正则表达式相关的功能。正则表达式是一种强大的文本处理工具,可以用来检查字符串是否符合某种模式,提取或替换符合特定模式的字符串等本章详细介绍python正则表达式。 阅读详情

相关推荐

Python正则表达式工程实践:从回溯陷阱到可维护正则API

正则表达式是文本处理的底层基础设施,其本质是将模式编译为有限状态机进行匹配。理解Python re模块的编译机制、回溯原理与Unicode行为,是避免性能崩溃和逻辑错误的关键。命名捕获组、re.compile预编译、VERBOSE注释模式等技术,显著提升正则的可读性、可测试性与协作效率。在日志解析、配置文件操作、多语言清洗等真实场景中,合理运用环视断言、占有量词和标志控制(如DOTALL、MULTILINE),可构建稳定可靠的文本处理流水线。本文聚焦Python原生re模块的深度工程化用法,覆盖从调试定位到

weixin_30698527的博客 456

python re.split_Python 中re.split()方法

re.split()切割功能非常强大>>> import re>>> line = 'aaa bbb ccc;ddd eee,fff'>>> line'aaa bbb ccc;ddd eee,fff'单字符切割>>> re.split(r';',line)['aaa bbb ccc', 'ddd\teee,fff']两个字符以上切割需要放在 [ ] 中>>> re.split(r'[;,]...

weixin_39522103的博客 404

Python正则表达式通配符详解:从基础通配到高级匹配实战

正则表达式作为文本处理的强大工具,其核心在于通过特定模式匹配字符串。通配符是正则表达式的基石,用于代表一类或任意字符。在Python中,点号(.)、反斜杠转义序列(如\d、\w)和方括号([])构成了基础通配体系,分别实现匹配任意字符、预定义字符类和自定义字符集合。理解其原理能显著提升文本解析效率,广泛应用于日志分析、数据清洗和爬虫开发等场景。本文聚焦Python 3.8+环境,深入解析通配符的细微差别与高效用法,涵盖贪婪匹配、零宽断言等高级技巧,帮助开发者精准处理IP地址提取、HTML解析等实际问题,规避

chaoyv 488

python 中 Re库 函数 re.split()

re.findall(pattern, string, maxsplit=0, flags=0) 将一个字符串按照正则表达式匹配结果进行分割,返回列表类型 pattern : 正则表达式的字符串或原生字符串表示 string : 待匹配字符串 maxsplit: 最大分割数,剩余部分作为最后一个元素输出 flags : 正则表达式使用时的控制标记 常用标记 说明 re.I   re.IGNORECASE 忽略正则表达式的大小写,[A‐Z]能够匹配小写字符 re.M   re.MULT

MCP的博客 2370

Python正则表达式底层原理与工程避坑指南

正则表达式(RegEx)是文本处理的基础技术,其本质是基于NFA状态机的模式匹配机制。在Python中,re模块并非独立引擎,而是PCRE库的封装,因此性能、回溯行为和边界匹配结果直接受底层C实现影响。理解re.compile()的AST解析与状态图构建过程、group()/span()的指针偏移语义、以及贪婪/懒惰匹配对回溯深度的指数级影响,是实现高性能、低内存消耗文本处理的关键。这些原理支撑着日志清洗、API参数校验、动态关键词搜索等高频工程场景。尤其在金融数据清洗、电商订单解析和实时弹幕过滤等真实项目

weixin_34124651的博客 346

数据科学家的正则实战:语义化匹配与多语言清洗

正则表达式是文本处理的基础技术,但传统教学聚焦语法符号,忽视真实数据场景中的语义理解与鲁棒性需求。现代数据科学面临字符集混乱(如中文全角、emoji、Unicode数字)、结构嵌套污染(HTML/JSON混排)和语义歧义(如非法日期形式匹配)三大挑战。因此,正则已从简单字符串匹配升维为‘轻量级语义解析器’——需结合命名捕获组提升可读性、编译复用保障性能、Unicode-aware库(如regex)支撑多语言,并通过测试驱动开发确保稳定性。本文围绕金融风控、电商评论、医疗日志等典型场景,详解如何用正则实现高精

weixin_33892359的博客 530

python(48):re.split 多分隔符

问题描述: 使用多个界定符分割字符串 问题 你需要将一个字符串分割为多个字段,但是分隔符(还有周围的空格)并不是固定的。 解决方案 string 对象的 split() 方法只适应于非常简单的字符串分割情形, 它并不允许有多个分隔符或者是分隔符周围不确定的空格。 当你需要更加灵活的切割字符串的时候,最好使用 re.split() 方法: >>> line = 'asdf f...

weixin_34354173的博客 1342

Apache mod_rewrite 高级实战:从重定向循环到 RewriteMap 工业级用法

Apache mod_rewrite 是 Web 服务器端 URL 重写与请求路由的核心模块,其本质是基于 PCRE 正则引擎、深度嵌入 Apache 请求生命周期的规则执行系统。理解 RewriteCond 的‘环境快照’机制与 RewriteRule 的‘规则集迭代’逻辑,是避免重定向循环、环境变量失效等典型故障的前提;掌握 RewriteMap 的 txt/dbm/prg 类型性能差异及安全边界,则直接决定高并发场景下的稳定性与可维护性。该技术广泛应用于 SEO 友好跳转、多语言路由、API 网关代理

weixin_30268071的博客 342

Python re库 正则表达式常用函数

返回一个迭代器,其中包含字符串中所有非重叠模式匹配项的匹配对象。编译一个正则表达式,返回一个正则表达式(Pattern)对象,供。编译正则表达式时,Python 会缓存编译后的对象以提高性能。从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,模块中对应的函数类似,但它们是针对已编译的模式进行操作的。可以清除这个缓存,但在大多数情况下,你不需要手动调用它。找到字符串中所有(非重叠)模式的匹配项,并返回一个列表。个)模式的匹配项,并返回修改后的字符串。编译一个正则表达式时,返回的是一个。

YHKKun的博客 462

深入解析V4L2框架与高通KMD在Camera驱动中的协同设计

本文深入解析了V4L2框架与高通KMD在Camera驱动中的协同设计。V4L2作为Linux内核标准视频驱动框架,提供了统一的设备抽象与数据流管理;而高通KMD则在其基础上,通过引入CRM等核心模块,构建了一套针对移动平台复杂相机系统的高效内核态驱动架构,实现了硬件配置与执行的解耦与智能调度。

qq_27496129的博客 1148

【SPSS实战】手动实现Quade非参数协方差分析:从数据准备到结果解读

本文详细介绍了在SPSS中手动实现Quade非参数协方差分析的实战方法。当数据不满足正态分布等参数检验假设时,通过将协变量和因变量转换为秩,并利用秩回归残差进行Kruskal-Wallis组间比较,提供了一种清晰、可操作的近似解决方案。该方法有效解决了非正态数据的协变量调整问题,适用于实验研究和调查数据分析。

bean的博客 468

python 中re.split()的用法

正则表达式的简单说明: 正则表达式,由普通字符和元字符组成 摘自:正则表达式 re.split方法 注:使用前需要引入包(import re) 功能:split能够按照所能匹配的字串将字符串进行切分,返回切分后的字符串列表 形式: re.split(pattern, string[, maxsplit=0, flags=0]) 1 pattern:匹配的字符串 string:需要切分的字符串 ...

识物专栏 4万+

RS485差分信号A下拉B上拉导致的乱码问题:一个硬件工程师的踩坑实录

本文通过一个工业网关项目中的RS485通信乱码故障,深入剖析了差分信号偏置电路设计的核心要点。文章详细记录了从波形抓取、原理图分析到多节点冲突排查的全过程,重点揭示了A下拉、B上拉这一反常规配置如何导致总线空闲状态不稳定,进而引发数据包末尾多出0x00字节及前导乱码的问题,并最终给出了硬件与软件协同的系统级解决方案与设计准则。

weixin_29159441的博客 236

Regular Expressions 正则表达式及re模块の拾遗

1、Regular Expressions 与 python 渊源 正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合。 正则表达式就是字符串的匹配规则,在多数编程语言里都有相应的支持,python里对应的模块是re 正则表达式本身也和python没有什么关系,就是匹配字符串内容的一种规则 2、正则表达式 在线正则工具:http://tool.chinaz.com/regex/ 2.1 字符集 字符组 : [字符组] 在同一个位置可能出现的各种字符组成了一

Sunny_Future的博客 658

matlab内读取文件目录时斜杠和反斜杠的使用

@matlab内读取文件目录时斜杠和反斜杠的使用TOC matlab内读取文件目录时,斜杠和反斜杠的使用 最近被斜杠和反斜杠弄晕了,于是总结了一下,在此和大家分享一下。 代码 clear; clc; close all; I1= imread('..\zs1.jpg'); %和代码文件夹同目录的图片 (纯反斜杠) I2= imread('../zs2/zs2.j...

weixin_44456694的博客 6574

6 赫斯曼网管软件industrial hivision用户管理

文章目录前言一、打开Industrial HiVision服务器二、在用户管理界面添加策略三、使用可选策略四、接受策略总结 前言 安装 Industrial HiVision 后,所有人都能广泛使用程序。安全起见,请进行相 关配置,对访问权限进行限制。 本文主要介绍用户管理基于某种角色模型。在访问角色中定义角色名称,通过分配访问权限给这些角色分配角色功能。例如,给管理人员自然要分配可用的权限,而观察员尽管可以登录,但没有能够进行更改的权限。Industrial HiVision 提供以下访问角色: 

t98746194的博客 1381

coursera python for everyone,Coursera课程Python for everyone:Quiz: Regular Expressions

推荐文章SQLAlchemyorm可以将数据库存储的数据封装成对象,同时,如果封装的好的话,所有的数据库操作都可以封装到对象中。这样的代码在组织结构上会非常的清晰,并且相对与使用sql语句在sql注入方面会极具降低。SQLAlchemy中的映射关系有四种,分别是一对多,多对一,一对一,多对多实现这种映射关系只需要外键(ForeignKey)推荐文章1**.网络数据采集:**是一种通过多种手段收集网...

weixin_35294091的博客 201

199、影像技术 roadmap 规划:未来移动影像的技术趋势与芯片算力展望

本文探讨了未来移动影像技术的发展趋势与芯片算力规划。作者从实际案例出发,指出影像技术演进需平衡传感器、ISP、算力和功耗。文章分为三部分:1)传感器将从堆像素转向提升信息密度,重点关注双层晶体管结构、混合快门和多光谱技术;2)ISP架构将向可编程计算单元转型,强调神经网络加速、硬件化多帧融合和语义处理;3)芯片算力瓶颈在于数据搬运,需优化存算一体架构、专用DMA和统一内存。最后给出五点建议:避免盲目追高像素、重视持续功耗、平衡ISP灵活性、预留算力余量、加强传感器与ISP协同设计。作者强调,影像技术的突破在

sundong_81的博客 60

python爬虫正则表达式语法_Python爬虫实践 —— Regular Expressions 正则表达式语法...

示例:RE最常用的功能之一,提交表单。例如:用户注册表单时,只允许用户名包含字符、数字、下划线和连接字符(-),并设置用户名的长度为3-15个字符匹配模板为 ^[a-z 0-9 _-]{3,15}$作用:1.数据验证,测试字符串内的模式是否匹配。2.替换文本,可以使用正则表达式来识别文档中的特定文本,完全删除该文本或者用其他文本替换它。3.基于模式匹配从字符串中提取子字符串,可以查找文档内或输入域...

weixin_39872123的博客 187

C++和OpenGL实现3D游戏编程【连载6】——不规则图形的纹理贴图(附源码)

上一节我们讨论了纹理贴图的相关基础操作,但上一节的纹理贴图操作基本上都是规则图形,包括圆形和球形虽然复杂一点,但是它也是规则的。这一节课我们要讨论一下,怎么在不规则图形上纹理贴图,就比如文章下图的心形纹理贴图,以及纹理的平移、旋转、放大缩小功能。

zhooyu的博客 1308

FM20S用户手册-PL端案例开发手册

为便于演示,本次操作直接将led_flash案例中的 "led_flash_fm20s\constraints\constrs_1Ved_flash_fm20s.fdc"文件全部代码拷贝至编辑 界面,并点击保存按钮。引脚约束请查看案例工程"led_flash\project\led_flash_fm20s\constraints\constrs_1\"目 录下的led_flash_fm20sfdc。(4)弹出如下界面,在界面配置Select device forthe project"内容,如下图。

创龙,嵌入式一体化解决方案商 401

Python正则表达式(regular expression)简介-re模块

              Python正则表达式(regular expression)简介-re模块                                       作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任。   就其本质而言,正则表达式(或RE模块)是一种小型的,高度专业化的编程语言,(在Python中)它内嵌在Python中,并通过re模块实现...

weixin_33943836的博客 270

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

python 逆向生成正则表达式语法_Python 爬虫实践 -- Regular Expressions (1) 正则表达式语法...

Python 爬虫实践 -- Regular Expressions (1) 正则表达式语法此处转载总结自菜鸟教程.RE 最常用的功能之一, 提交表单. 例如:用户注册表单时, 只允许用户名包含字符, 数字, 下划线和连接字符 (-), 并设置用户名的长度为 3-15 个字符匹配模板为 ^[a-z 0-9 _-]{3,15}$实际上正则表达式有三个作用:1. 数据验证, 测试字符串内的模式是否匹配...

weixin_42504279的博客 148

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Python正则表达式实战指南:从回溯陷阱到中文文本高效处理

正则表达式是文本处理的底层协议,本质是基于有限状态机的模式匹配机制,其性能与可靠性取决于对贪婪/懒惰量词、环视断言、编译缓存等核心原理的深度理解。在真实工程中,未预编译的re.search、误用.*?导致的回溯爆炸、以及忽略Unicode特性的\w失效,是高频故障根源。尤其在中文场景下,需显式处理一-鿿汉字范围、全角空格 、中英文引号等特性,而非依赖默认ASCII语义。本文聚焦Python re模块在日志清洗、OCR后结构化、合同条款抽取等工业级任务中的可维护写法,强调re.compile()为必选项、fi

weixin_30553777的博客 317

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

课程表的归一化处理

<think>我们根据内容生成摘要,≤150字。内容主要是关于Typora复制Markdown到编辑器保留格式的方法,以及数据处理(课程别名归一化)的教程,包括正则表达式、字典映射、函数等。需要精炼概括。用户要求“根据以下内容,生成≤150字的文章摘要”,所以我们提供摘要即可。注意字数限制。</think>本文介绍了Typora中保留格式插入Markdown的三种方法,并重点解析了课程别名归一化的数据处理流程:通过文本清洗、正则表达式、字典映射及辅助函数,解决教师任课科目与课表名称不

ahmcwt的专栏 237

scrapling 官网教程

选择使用方法查找元素访问元素的数据Navigation 导航抓取网站内容HTTP 请求动态加载的网站动态加载,并且有防护的网站。

freeking101的博客 1113
上一篇: linux traceroute命令详解_详解Linux系统路由跟踪指令traceroute语法、工作原理和实例说明...
下一篇: 如何计算一组数据的波动幅度_如何用Excel计算一个投资组合(双资产/三资产)的波动率?...
weixin_39708708
博客等级 码龄9年 21粉丝 148原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值