日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

正则 不能有中文逗号_Python爬虫教程-19-数据提取-正则表达式(re)

發(fā)布時間:2025/3/20 python 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 正则 不能有中文逗号_Python爬虫教程-19-数据提取-正则表达式(re) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
  • 正則表達式:一套規(guī)則,可以在字符串文本中進行搜查替換等
  • 正則使用步驟:

1.使用 compile 函數(shù)將正則表達式的字符串編譯成一個 pattern 對象

2.通過 pattern 對象的一些方法對文本進行匹配,匹配結(jié)果是一個 match 對象

3.用 match 對象的方法,對結(jié)果進行操作

正則的常用方法:

  • match:從開始位置開始查找,一次匹配,即1次匹配成功則退出
  • search:從任何位置開始查找,一次匹配
  • findall:全部匹配,返回列表
  • finditer:全部匹配,返回迭代器
  • split:分割字符串,返回列表
  • sub:替換

匹配中文

  • 中文是Unicode編碼(utf-8也是Unicode編碼),范圍:主要在[u4e00-u9fa5]
  • 中文全角逗號一類的不在[u4e00-u9fa5]范圍內(nèi)

貪婪與非貪婪模式

  • 貪婪模式:在整個表達式匹配成功的前提下,盡可能多的匹配
  • 非貪婪模式:在整個表達式匹配成功的前提下,盡可能少的匹配
  • python里面數(shù)量詞默認是貪婪模式

例如:

  • 查找文本abbbbbbbccc
  • re結(jié)果是: ab*
  • 貪婪模式結(jié)果是:abbbbbbb
  • 非貪婪模式結(jié)果是:a

案例v23

# 正則結(jié)果match的使用案例 import re# 以下正則分成2個組,以小括號為單位 # [a-z]表示出現(xiàn)小寫a-z任意字母都可以,+表示至少出現(xiàn)1次 # 兩組之間有一個空格,表示匹配的兩個英文字符之間有空格 s = r"([a-z]+) ([a-z]+)"# 編譯 pattern = re.compile(s, re.I) # s, I表示忽略大小寫m = pattern.match("Hello world wide web")# group(0) 表示返回整個匹配成功的字符串,即所有小組 s = m.group(0) print("所有小組的匹配結(jié)果:n", s)# 返回匹配成功的整個字符串的跨度,即所有小組 a = m.span(0) print("所有小組的匹配結(jié)果跨度:n", a)# group(0) 表示返回的第一個分組匹配成功的字符串 s = m.group(1) print("第1小組的匹配結(jié)果:n", s)# 返回匹配成功的整個字符串的跨度 a = m.span(1) print("第1小組的匹配結(jié)果跨度:n", s)# groups() 打印出所有的小組,等價于m.group(1), m.group(2)... s = m.groups() print(s)

運行結(jié)果

從結(jié)果可以看到:匹配到兩個小組,一個Hello,一個world,中間的空格是外面的,代碼中包含一些具體的輸出格式

案例v24

# search的基本使用import res = r'd+'pattern = re.compile(s)# 無參數(shù)表示從頭開始查找,到最后結(jié)束 m = pattern.search("one12two34three56") print(m.group(0))# 參數(shù)表明搜查的范圍,例如:10-40 m = pattern.search("one12two34three56", 10, 40) print(m.group(0))

運行結(jié)果


因為是從第10個開始查找,所以查到的是56

案例v25

# findall,finditer的基本使用 import res = r'd+'pattern = re.compile(s)m = pattern.findall("I am 18 years old, and 185 high") print(m)n = pattern.finditer("I am 18 years old, and 185 high") print(type(n))# 迭代器使用for循環(huán)輸出 for i in n:# 只輸出i會包含無用數(shù)據(jù)print(i.group())

運行結(jié)果

查找所有匹配的字符串

匹配中文

代碼

import rehello = u'你好,再見陌生人'# 中文全角逗號一類的不在[u4e00-u9fa5]范圍內(nèi) pattern = re.compile(r'[u4e00-u9fa5]+')m = pattern.findall(hello)print(m)

運行結(jié)果


因為中文全角逗號一類的不在[u4e00-u9fa5]范圍內(nèi),所在 findall 返回的是一個列表,包含兩個值

原文:

https://blog.csdn.net/qq_40147863/article/details/82181151?blog.csdn.net

總結(jié)

以上是生活随笔為你收集整理的正则 不能有中文逗号_Python爬虫教程-19-数据提取-正则表达式(re)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。