随笔 - 22  文章 - 0 评论 - 0 阅读 - 76
< 2025年2月 >
26 27 28 29 30 31 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 1
2 3 4 5 6 7 8

1正则表达

import  re

# 1.字符集 [ad] 表示a或者d  [^ad] 表示除了a和d之外的字符 [a-d] 表示a到d之间的字符
s = 'asd dfg dss add  dsa  dsd dsd'
a = re.findall('a[sd]d',s)
b = re.findall('a[^ad]d',s)
print(a)
print(b)

# 概括字符集
# \d 表示数字  \D 表示非数字  \s 表示空白字符  \S 表示非空白字符  \w 表示单词字符  \W 表示非单词字符
s1 = '123 456 789 0sddf&\n'
a1 = re.findall('\W',s1)
print(a1)


# 量词
# * 表示0次或多次  + 表示1次或多次  ? 表示0次或1次  {n} 表示n次  {n,} 表示n次或多次  {n,m} 表示n到m次
s2 = 'python java 789 php 456 python'
a2 = re.findall('[a-z]{3,6}',s2) # 量词默认是贪婪模式,即尽可能多的匹配
a3 = re.findall('[a-z]{3,6}?',s2) # 非贪婪模式,即尽可能少的匹配
print(a2)
print(a3)
# *? 表示0次或多次  +? 表示1次或多次  ? 表示0次或1次  {n}? 表示n次  {n,}? 表示n次或多次  {n,m}? 表示n到m次
s3 = 'pytho java 789 php 456 pythonn123python55555pytho789pythonnn'
a4 = re.findall('python*',s3)  # *前面的字符匹配0次或多次
a5 = re.findall('python?',s3) # ?前面的字符匹配0次或多次   这个可以用于去重
print(a4)
print(a5)

#  边界匹配
# ^ 表示字符串的开头  $ 表示字符串的结尾  \b 表示单词的边界  \B 表示非单词的边界
s4 = '1206013397'
a6 = re.findall('^120',s4) # 匹配字符串的开头
a7 = re.findall('\d*7$',s4) # 匹配字符串的结尾
a8 = re.findall('^\d{4,10}$',s4) # 匹配单词的边界
print(a6)
print(a7)
print(a8)

#组
s5 = 'python java 789 php 456 pythonn123python55555pytho789pythonnn'
a9 = re.findall('(python){1}',s5) # 匹配python*前面的字符
print(a9)

# re.I 表示忽略大小写  re.M 表示多行匹配  re.S 表示单行匹配  re.X 表示忽略空白字符
# .表示除了换行符之外的任意字符
s6 = 'Java\n python Python JAVA'
a10 = re.findall('java.{1}',s6,re.I | re.S) # 忽略大小写和换行符
print('a10等于:' + str(a10))

# re.sub() 表示替换符合规则的字符串  replace() 表示替换字符串
s7 = 'Javac#pythonPythonc#goJAVA'
a11 = re.sub('c#','134',s7,1)  # 第一个参数表示要替换的字符串,第二个参数表示替换成的字符串,第三个参数表示要替换的字符串所在的字符串,第四个参数表示替换的次数
print(a11)
# sub()强大的地方在于一二个参数可以是一个函数
lanuage = 'python java php c# c++ c java python'
def func(m):
    metch = m.group()
    # return 'python'
    # return '123'
    return '!!' + metch + '!!'
a12 = re.sub('python',func,lanuage)
print(a12)

#  替换字符串lanuage中大于5的数字为2
lanuage = '155dasdfds789sds1ds36696'
def func(m):
    metch = m.group()
    if int(metch) > 5:
        return '2'
    else:
        return metch
a13 = re.sub('\d',func,lanuage)
print(a13)
# 我们自己编写函数的时候可以参看一下这种设逻辑

##  把函数作为参数传递

re方法

# re.findall() 表示匹配所有符合规则的字符串 
# re.search() 表示匹配第一个符合规则的字符串  
# re.match() 表示匹配字符串的开头 
# re.sub() 表示替换符合规则的字符串
# re.split() 表示按照符合规则的字符串分割字符串  
# re.compile() 表示编译正则表达式 
# re.escape() 表示转义特殊字符
import re
s = '3456fff66f'
r2 = re.findall('\d',s)
r = re.match('\d',s)
rr =r.group()  # 返回匹配的字符串
rrr =r.span()  # 返回匹配的字符串的起始位置和结束位置
print(rr)
print(rrr)
r1 = re.search('\d',s)

r4 = re.split('\d',s)
# r5 = re.compile('\d')
# r6 = re.escape(s)
print(r)
print(r2)
print(r1)
print(r4)
# print(r5)
# print(r6)
import  re
s = 'life  is short, you need python'
print(re.findall('life(.*)python',s)) #匹配life和python之间的内容
r = re.search('life(.*)python',s)
print(r.group(1)) #匹配life和python之间的内容
print(r.group(0)) #匹配整个字符串
print(r.span()) #匹配字符串的起始位置和结束位置
print(r.start()) #匹配字符串的起始位置
print(r.end()) #匹配字符串的结束位置

#  还是用findall 方便一点

s1 = 'life  is short, you need python i love python'
print(re.findall('life(.*)python(.*)python',s1)) #匹配life和python之间的内容
r1 = re.search('life(.*)python(.*)python',s1)
print(r1.group(0))  #匹配整个字符串
print(r1.span())    #匹配字符串的起始位置和结束位置
print(r1.start())   #匹配字符串的起始位置
print(r1.end())     #匹配字符串的结束位置
print(r1.group(1))  #匹配life和python之间的内容
print(r1.group(2))  #匹配life和python之间的内容
print(r1.groups())  #匹配life和python之间的内容

json

#  JSON是轻量级数据交换格式
#  JSON是JavaScript Object Notation的缩写
#  符合json格式的字符串,可以叫做json字符串
# 易于阅读
# 易于解析
# 网络传输效率高
import json

# json.dumps() 将python对象转换为json字符串
data = {
    'name': '张三',
    'age': 18,
    'gender': '男'
}
s = json.dumps(data, ensure_ascii=False)
print(data)
print(data.get('name'))
print(data['age'])
print(s)
# json.loads() 将json字符串转换为python对象
json_str = '{"name": "张三", "age": 18, "gender": "男"}'# json中的字符串必须使用双引号
data = json.loads(json_str)
print(data)
print(type(data))
print(type(json_str))

print('--------------------------------------------')

json_str1 = '[{"name": "张三", "age": 18, "gender": "男"},{"name": "张三", "age": 18, "gender": "男"}]'# json中的字符串必须使用双引号
data1 = json.loads(json_str1)
print(data1)
print(type(data1))
print(data1[1].get('name'))

# json    python
# odject   dict
# array   list
# string  str
# number  int/float
# true    True
# false   False
# null    None

# json对象与json字符串
# json对象:python中的字典
# json字符串:符合json格式的字符串
# json 数据转换格式
posted on   Martinl_it  阅读(1)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
点击右上角即可分享
微信分享提示