Python入门学习笔记8:正则表达式与JSON 取中间值等

  1 """
  2 正则表达式
  3 JSON(XML)
  4 
  5 正则表达式是一个特殊的字符序列,一个字符串是否与我们所设定的这样的字符序列相匹配
  6 快速检索文本,实现一些替换文本的操作
  7 
  8 1.检查一串数字是否是电话号码
  9 2.检测一个字符串是否符合email
 10 3.把一个文本里指定的单词替换为另外一个单词
 11 """
 12 import re
 13 a = 'C|C++|C#|Python|Javascript、Python'
 14 print(a.index('Python') > -1)
 15 print(a.index('Python'))
 16 print('Python' in a)
 17 r = re.findall('Python', a)
 18 print(r)
 19 #规则
 20 if len(r) != 0:
 21     print("字符串包含Python")
 22 else:
 23     print("No")
 24 
 25 #正则表达式找到0到9的数字 'Python' 普通字符   '\d' 元字符
 26 b = 'C1|C++2|C#3|Python4|Javascript'
 27 r1 = re.findall('\d',b) # \d数字0到9
 28 print(r1)#['1', '2', '3', '4']
 29 r2 = re.findall('\D',b) # \D非数字
 30 print(r2)#['C', '|', 'C', '+', '+', '|', 'C', '#', '|', 'P', 'y', 't', 'h', 'o', 'n', '|', 'J', 'a', 'v', 'a', 's', 'c', 'r', 'i', 'p', 't']
 31 
 32 #字符集  a[^c-f]c  a c中间不包含c-f的字符
 33 s = 'abc,acc,adc,aec,afc,ahc'
 34 r3 = re.findall('a[^c-f]c',s)
 35 print(r3)#['abc', 'ahc']
 36 
 37 #概括字符集
 38 # \d \D  \w(单词字符) \W
 39 # \s(空白字符) \S
 40 # . 匹配除换行符\n之外其他所有字符
 41 a = 'python111java&_ \n|678php'
 42 r4 = re.findall('\s',a)  # '\d'等价于'[0-9]'  '\D'等价于'[^0-9]'  '\w'等价于'[A-Za-z0-9_]'  '\w'等价于'[^A-Za-z0-9_]'
 43 print(r4) # [' ', '\n']
 44 
 45 #数量词
 46 a = 'python 1111java678php'
 47 r5 = re.findall('[a-z]{3,6}',a)  #  [a-z][a-z][a-z]等价于'[a-z]{3}'
 48 print(r5) #['python', 'java', 'php']
 49 #贪婪与非贪婪
 50 #默认贪婪 re.findall('[a-z]{3,6}',a)
 51 #非贪婪   re.findall('[a-z]{3,6}?',a)
 52 r6 = re.findall('[a-z]{3,6}?',a)
 53 print(r6) #['pyt', 'hon', 'jav', 'php']
 54 # * 匹配0次或者无限多次
 55 # + 匹配1次或者无限多次
 56 # ? 匹配0次或者1次
 57 a = 'pytho0python1pythonn2'
 58 r7 = re.findall('python*',a)
 59 print(r7)#['pytho', 'python', 'pythonn']
 60 r8 = re.findall('python+',a)
 61 print(r8)#['python', 'pythonn']
 62 r9 = re.findall('python?',a)
 63 print(r9)#['pytho', 'python', 'python']
 64 
 65 #边界匹配
 66 qq = '1234567890'
 67 # 位数4~8  完整匹配:'^\d{4,8}$'
 68 r10 = re.findall('123$',qq)
 69 print(r10)#
 70 
 71 a = 'pythonpythonpython'
 72 r11 = re.findall('(python){3}(JS)',a)
 73 print(r11)
 74 # []或关系  ()且关系  {}步长
 75 
 76 #模式参数
 77 language = 'CC++C#PythonC#Javascript'
 78 r12 = re.findall('c#.{1}',language,re.I | re.S) # 模式参数 re.I 忽略大小写
 79 print(r12)
 80 #字符串替换    re.sub(选择要替换的字符串,替换成的字符串,字符串,替换次数)
 81 #r13 = language.replace('C#','GO')
 82 
 83 def convert(value):
 84     matched = value.group()
 85     return '!!'+matched+'!!'
 86     #return 'GO'
 87 
 88 r13 = re.sub('C#',convert,language)
 89 print("r13:",r13)
 90 
 91 s = 'A8C3721D86'
 92 
 93 def convert1(value):
 94     macthed = value.group()#从对象中提取对应的字符串
 95     if int(macthed) >= 6:
 96         return '9'
 97     else:
 98         return '0'
 99 
100 r14 = re.sub('\d',convert1,s)
101 print("r14:",r14)
102 
103 s = '88C3721D86'
104 r15 = re.match('\d',s)#从首字母开始匹配
105 print(r15)
106 r16 = re.search('\d',s)#搜索整个字符串
107 print(r16.group())
108 r17 = re.findall('\d',s)
109 print(r17)
110 
111 s = 'life is short,i use python,i love python'
112 r18 = re.search('life(.*)python',s)
113 print(r18.group(1))
114 r19 = re.findall('life(.*)python',s)
115 print(r19)
116 r20 = re.search('life(.*)python(.*)python',s)
117 print(r20.group(0,1,2))  #('life is short,i use python,i love python', ' is short,i use ', ',i love ')
118 print(r20.groups())      #(' is short,i use ', ',i love ')
119 
120 #JSON 是一种数据格式、是一种轻量级的数据'交换格式'
121 #JSON特点(跨语言交换数据)  易于阅读、易于解析、网络传输效率高
122 
123 
124 import json
125 #json字符串   str转json
126 json_str = '{"name":"xiaoming","age":18}'
127 student = json.loads(json_str)
128 print(type(student))
129 print(student)
130 print(student['name'],student['age'])
131 #json数组
132 json_array = '[{"name":"xiaoming","age":18,"flag":false},{"name":"xiaoming","age":18}]'
133 students = json.loads(json_array)
134 print(type(students))
135 print(students)
136 
137 """
138 json     python
139 object   dict
140 array    list
141 string   str
142 number   int
143 number   float
144 true     True
145 false    False
146 null     None
147 """
148 
149 #json  json数组转str
150 student = [
151             {'name':'xiaoming','age':18,'flag':False},
152             {'name':'xiaoming','age':18}
153           ]
154 json_str = json.dumps(student)
155 print(type(json_str))
156 print(json_str)
157 #NOSQL MongoDB存储序列化对象
158 
159 name = 'buy4H'
160 rule = r'buy(.*?)H'
161 #print str1[:str1.index(str2)]     #获取 "."之前的字符(不包含点)  结果 Hello
162 #print str1[str1.index(str2):] ; #获取 "."之后的字符(包含点) 结果.python
163 print("取H之前的字符" + name[:name.index('H')])
164 print("取buy之后的字符" + name[name.index('y'):])
165 text = re.findall(name, rule)
166 print("取中间文本:" + str(text))
167 
168 
169 #截取中间值: 
170 # 本文实例讲述了python根据开头和结尾字符串获取中间字符串的方法。分享给大家供大家参考。具体分析如下:
171 # 这里给定一个字符串,指定开头和结尾的字符串,返回中间包夹的字符串,比如:
172 # content:<div class="a">jb51.net</div>
173 # startStr:<div class="a">
174 # endStr:</div>
175 # 返回结果:jb51.net
176 def GetMiddleStr(content,startStr,endStr):
177   startIndex = content.index(startStr)
178   if startIndex>=0:
179     startIndex += len(startStr)
180   endIndex = content.index(endStr)
181   return content[startIndex:endIndex]
182 if __name__=='__main__':
183   print(GetMiddleStr('<div class="a">jb51.net</div>','<div class="a">','</div>'))
184   print(GetMiddleStr(name,'buy','H'))

 

posted @ 2020-07-06 18:52  霜井  阅读(337)  评论(0编辑  收藏  举报