Python如何从一堆字符串中筛选中某一段的字符串

33 篇文章 0 订阅
30 篇文章 0 订阅

前言

-------------------------2021年12月8日修正------------------------

想搞某些api的二维码登录时,需要Key,然后从服务器获取的数据特别长,180多位的字符,但是我需要的字符串在这其中的一段里面,如何通过Python来实现筛选这段字符串就成了关键问题。

方法

方法有很多种,比如用字典,正则表达式,下标范围,xPath等等…

  • 第一种 - 字典
# 严格来说,字典不算字符串,因为这两个是不同的数据类型,但小白容易把这当作字符串
varName={"name":"小明","age":"16"}
# 直接使用['keyName']的方式就完事了,如下
varName['name'] # 此处注意,字典内的键值是区分大小写的
>>> 小明

# 如果变量是这样的,那另当别论
varName="{'name':'小明','age':'16'}"
varName='{"name":"小明","age":"16"}'
# 导入json模块
import json
json.loads(varName)
# 然后再使用上面的方法
  • 第二种 - 正则表达式

有关Python正则表达式的教程可看此文章Python正则表达式指南
或者官方文档re — Regular expression operations — Python 3.10.0 documentation

a="我是你爸爸的弟弟的儿子的哥哥啊!你怎么能不认识我呢?我在你小时候还给你发了个50块钱的红包呢!Why?"
# 比如我们需要从上面的话里面筛选我们想要的内容,比如红包金额
# 由于此处语句极为简单,所以可以直接使用如下代码
import re
re.findall(r"(\d+)",a,re.S)
>>> 50

# 那如果是如下呢?
a="+86 12345678901"
b="123123198810102333"
c="I love you~"
d="我们明天就要截止了,日期是2012年11月21日14点00分"

# 变量a, 筛选手机号
re.findall(r".86\ (\d+)",a,re.S)

# 变量b, 筛选出生年月日
re.findall(r"\d{6}(\d{8})\d+",b,re.S)

# 变量c, 筛选出单词
re.findall(r"([a-zA-Z]+)",c,re.S)

# 变量d, 筛选年月日时分
re.findall(r"(\d+)\w(\d+)\w(\d+)\w(\d+)\w(\d+)",d,re.S)
  • 第三种 - 下标范围
a="key=abcdef1234567890&userName=admin&password=1234567"

# 筛出userName
a[30:35]
>>> 'admin'

暂时介绍这么多,有疑问请评论

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值