字符串对象方法
以逗号分隔的字符串可用split拆分成数段: 1.png split结合strip(用于修剪空白符(包括换行符))一起使用: 2.png 使用join方法把字符串与指定的字符拼接起来: 3.png 使用in、index和find检测子字符串: 4.png find和index的区别:如果找不到字符串,find会返回-1;index将会引发一个异常。 5.png count函数返回指定子字符串的出现次数: 6.png replace用于将指定模式替换为另一个模式: 7.png python内置的字符串方法: 8.png 9.png正则表达式
正则表达式(通常称作regex)提供一种灵活的在文本中搜索或匹配字符串模式的方式。正则表达式是根据正则表达式语言编写的字符串。Python内置的re模块负责对字符串应用正则表达式。
re模块的函数分为三个大类:模式匹配、替换和拆分。
如果对多条字符串应用同一条正则表达式,可以通过re.compile创建regex对象,可以节省大量CPU时间。
正则表达式方法: 55.png
源码:
# coding: utf-8
# ## 字符串对象方法
# In[1]:
# 以逗号分隔的字符串可以用split拆分成数段
language = 'Python,Java, C, C++'
language.split(',')
# In[2]:
# split结合strip(用于修剪空白符(包括换行符))一起使用:
pieces = [x.strip() for x in language.split(',')]
print(pieces)
# In[3]:
# 使用join方法连接字符串
lis = ['first','second','third']
'::'.join(lis)
# ### 子字符串定位
# In[4]:
val = 'is,or,that'
'that' in val
# In[5]:
# 指出第一个出现的','在字符串中的位置
val.index(',')
# In[6]:
# find也是返回查找的第一个字符在原来字符串中的位置
val.find('or')
# ### find和index的区别
# In[7]:
val.find(':')
# In[8]:
val.index(':')
# In[9]:
# count函数返回指定字符出现的次数
val.count('t')
# In[10]:
# replace用于指定模式替换为另一个模式
val.replace(',','::')
# In[11]:
val.replace(',','')
# ## 正则表达式
# In[12]:
# 使用正则表达式拆分字符串
import re
text = 'foo bar\t baz \tqux'
re.split('\s+',text)
# In[13]:
# 使用re.compile编译regex得到可重用的regex对象
regex = re.compile('\s+')
regex.split(text)
# In[14]:
# 使用findall方法,得到匹配regex的所有模式
regex.findall(text)
# In[15]:
# 识别电子邮件地址
text = '''Dave dave@google.com
Steve steve@gmail.com
Rob rob@gmail.com
Ryan ryan@yahoo.com
'''
pattern = r'[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}'
# re.IGNORECASE的作用是使正则表达式对大小写不敏感
regex = re.compile(pattern,flags=re.IGNORECASE)
# 对text使用findall将得到一组电子邮件地址
regex.findall(text)
# In[16]:
# search返回的是文本中第一个电子邮件地址
m = regex.search(text)
print(m)
# In[17]:
text[m.start():m.end()]
# In[18]:
# regex.match只匹配出现在字符串开头的模式
print(regex.match(text))
# In[19]:
# 使用sub方法,将匹配到的模式替换为指定字符串,并返回所得到的新字符串
print(regex.sub('REDACTED',text))
# In[20]:
# 将地址分成3个部分:用户名、域名以及域后缀
pattern = r'([A-Z0-9._%+-]+)@([A-Z0-9.-]+)\.([A-Z]{2,4})'
regex = re.compile(pattern,flags=re.IGNORECASE)
m = regex.match('wesm@bright.net')
# 通过groups方法返回一个元组
m.groups()
# In[21]:
# 对于带有分组功能的模式,findall会返回一个元组列表
regex.findall(text)
# In[22]:
# sub通过\1、\2、\3的特殊符号访问各匹配项中的分组
print(regex.sub(r'Username:\1,Domain:\2,Suffix:\3',text))
# In[23]:
# 为各个匹配分组加上一个名称
regex = re.compile(r'''
(?P<username>[A-Z0-9._%+-]+)
@
(?P<domain>[A-Z0-9.-]+)
\.
(?P<suffix>[A-Z]{2,4})''',flags=re.IGNORECASE|re.VERBOSE)
m = regex.match('wesm@bright.net')
# 调用groupdict()返回带有分组名称的字典
m.groupdict()
网友评论