文章目录

  • 一,索引
  • ①index()函数
  • ②find()函数
  • ③find()和index()的区别
  • 二,正则
  • re模块中常用功能函数
  • ①compile() ==编译==


一,索引

①index()函数

index()函数的完整语法是这样的:

str.index(str, beg=0, end=len(string))
str – 指定检索的字符串
beg – 开始索引,默认为0。
end – 结束索引,默认为字符串的长度。

该方法与 python find()方法一样,只不过如果str不在 string中会报一个异常。


例如

a=[22,33,44,55]
print(a.index(22))

0


a = '''正在 Ping www.baidu.com [220.181.112.244] 具有 32 字节的数据:
来自 220.181.112.244 的回复: 字节=32 时间=190ms TTL=53
来自 220.181.112.244 的回复: 字节=32 时间=59ms TTL=53
来自 220.181.112.244 的回复: 字节=32 时间=83ms TTL=53
来自 220.181.112.244 的回复: 字节=32 时间=125ms TTL=53

220.181.112.244 的 Ping 统计信息:
    数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
    最短 = 59ms,最长 = 190ms,平均 = 114ms'''


print('这个字符串内第一个w字符的位置是:',a.index('w'))
print(type(a.index('w')))
print('这个字符串内第一个w字符的位置是:',a.find('w'))
print('这个字符串内第二个w字符的位置是:',a.index('w',a.index('w')+1))  #a.index('w')+1	相当与位置
print('这个字符串内第二个w字符的位置是:',a.find('w',a.find('w')+1))
print('这个字符串内最后一次出现w字符的位置是:',a.rfind('w'))

这个字符串内第一个w字符的位置是: 8
<class ‘int’>
这个字符串内第一个w字符的位置是: 8
这个字符串内第二个w字符的位置是: 9
这个字符串内第二个w字符的位置是: 9
这个字符串内最后一次出现w字符的位置是: 1

寻找ip地址

start_1 = a.find('[')+1
end_1 = a.find(']')
print('百度的IP地址为:',a[start_1:end_1])

a[:]---->是寻找a中的范围,左闭右开。

百度的IP地址为: 220.181.112.244

②find()函数

find函数的完整语法如下

str.find(str, beg=0, end=len(string
str – 指定检索的字符串
beg – 开始索引,默认为0。
end – 结束索引,默认为字符串的长度

检测字符串中是否包含子字符串 str ,如果指定 beg(开始) 和 end(结束) 范围,则检查是否包含在指定范围内,如果指定范围内包含指定索引值,则返回索引值在字符串中的起始位置,否则返回-1。

a = 'china number1'
print(a.find('Q'))
print(a.find('c'))
print(a.find('nu'))

-1
0
6

③find()和index()的区别

可见,index()方法在没有找到指定字符串的时候会抛出异常.
另外,index()也可以用于List对象,返回指定元素的索引,用法相同.

二,正则

re模块中常用功能函数

①compile() 编译

编译正则表达式模式,返回一个对象的模式。(可以把那些常用的正则表达式编译成正则表达式对象,这样可以提高一点效率。

格式
re.compile(pattern,flags=0)

pattern: 编译时用的表达式字符串。

flags 编译标志位,用于修改正则表达式的匹配方式,如:是否区分大小写,多行匹配等。常用的flags有:

标志

含义

re.S

使.匹配包括换行在内的所有字符

re.I

使匹配对大小写不敏感

re.L

做本地化识别(locale-aware)匹配,法语等

re.M

多行匹配,影响^和$

re.X

该标志通过给予更灵活的格式以便将正则表达式写得更易于理解

re.U

根据Unicode字符集解析字符,这个标志影响\w,\W,\b,\B


寻找ip地址

import re

pattern = re.compile(r'((\d+\.)+\d+)')
print(pattern)  #无意义,只是看一下什么是什么
print(type(pattern)  #无意义,只是看一下它的类型
result_1 = pattern.findall(a)
print(result_1)
print('百度的IP地址为:',result_1[0][0])

re.compile(’((\d+\.)+\d+)’)
<class ‘_sre.SRE_Pattern’>
[(‘220.181.112.244’, ‘112.’), (‘220.181.112.244’, ‘112.’), (‘220.181.112.244’, ‘112.’), (‘2
20.181.112.244’, ‘112.’), (‘220.181.112.244’, ‘112.’), (‘220.181.112.244’, ‘112.’)]
百度的IP地址为: 220.181.112.244