1. 程式人生 > >Python/Pandas(十四)-字串與正則

Python/Pandas(十四)-字串與正則

split拆分常和strip使用

val='a,b,guido'
val.split(',')

['a', 'b', 'guido']
pieces=[ x.strip() for x in val.split(',')]
pieces

['a', 'b', 'guido']
'::'.join(pieces)
'a::b::guido'

first,second,third=pieces
first+'::'+'::'+second+'::'+third
'a::::b::guido'

in, find, index 子串定位
find index 的區別是: 如果找不到字串,index將會引發一個異常, 而不是返回-1

'guido' in val
True
val.index(',')
1


val.find(':')
-1

val.find(',')
1

val.inde(':')

ValueError                                Traceback (most recent call last)
<ipython-input-162-280f8b2856ce> in <module>()
----> 1 val.index(':')

ValueError: substring not found

count 返回子字串出現的次數
replace用於將制定模式替換為另一個模式,也常常用於刪除模式,傳入空字串

val.replace(',','::')
val.replace(',','')

這裡寫圖片描述

正則表示式

re模組的函式可以分為三個大類: 模式匹配,替換以及拆分

import re
text="foo bar \t baz  \tqux"
re.split('\s+',text)

呼叫re.split正則表示式會先被編譯,然後再在text上呼叫split方法。可以用re.compile自己編譯regex以得到一個可以重用的regex物件

regex=re.compile('\s+')
regex.split(text)

如果希望得到匹配到的所有模式,使用findall

regex.findall(text)
[' ', ' \t ', '  \t']

findall 返回字串中所有的匹配項
search 只返回第一個匹配項
match 只匹配字串的首部

text="""
Dave [email protected]
Steve [email protected]
Rob [email protected]
Ryan [email protected]
"""
pattern = r'[A-Z0-9._%+-][email protected][A-Z0-9.-]+\.[A-Z]{2,4}'

regex=re.compile(pattern, flags=re.IGNORECASE)

regex.findall(text)

['[email protected]', '[email protected]', '[email protected]', '[email protected]']

m=regex.search(text)
m
<_sre.SRE_Match object; span=(6, 21), match='[email protected]'>

text[m.start():m.end()]
'[email protected]'

print (regex.match(text))
None

sub 來替換指定的字串

print (regex.sub('REDACTED',text))

Dave REDACTED
Steve REDACTED
Rob REDACTED
Ryan REDACTED

groups 返回模式匹配的一組

pattern = r'([A-Z0-9._%+-]+)@([A-Z0-9.-]+)\.([A-Z]{2,4})'
regex=re.compile(pattern,flags=re.IGNORECASE)
m=regex.match('[email protected]')
m.groups()

('wesm', 'bright', 'net')

findall 返回一個元組列表

regex.findall(text)

[('dave', 'google', 'com'),
 ('steve', 'gmail', 'com'),
 ('rob', 'gmail', 'com'),
 ('ryan', 'yahoo', 'com')]
print (regex.sub(r'Usrname: \1, Domain:\2, Suffix:\3',text))

Dave Usrname: dave, Domain:google, Suffix:com
Steve Usrname: steve, Domain:gmail, Suffix:com
Rob Usrname: rob, Domain:gmail, Suffix:com
Ryan Usrname: ryan, Domain:yahoo, Suffix:com

這裡寫圖片描述

相關推薦

Python/Pandas-字串

split拆分常和strip使用 val='a,b,guido' val.split(',') ['a', 'b', 'guido'] pieces=[ x.strip() for x in val.split(',')] pieces ['a', '

搭建ELK(ElasticSearch+Logstash+Kibana)日誌分析系統 logstash grok 解析日誌

摘要 這一節補充一下logstash使用grok正則解析日誌 Grok 是 Logstash 最重要的外掛。通過在filter中使用grok,可以把日誌中的關鍵字匹配出來。 grok正則主要有兩部分: 一是grok自帶的grok模式表示式,即是gr

JavaScript RegExp表示式

轉義符號 \(反斜槓) \n(字串換行) \\(字串\) \?(字串?) 建立正則表示式 1、語法/pattern/attributes 引數 pattern 是一個字串,指定了正則表示式的模式。 引數 attributes 是一個可選的字串,包含屬性 “i”、

NOIP複賽複習字串演算法鞏固提高

一、Trie樹   1.定義: 通過字串建成一棵樹,這棵樹的節點個數一定是最少的。例如:4個字串"ab","abc","bd","dda"對應的trie樹如下: 其中紅色節點表示存在一個字串是以這個點結尾的。  一個性質:在樹上,兩個點u,

Python筆記:操作excel openpyxl模塊

align pre 一行 color value colspan xls str 工作 (一) 常遇到的情況 就我自己來說,常遇到的情況可能就下面幾種: 讀取excel整個sheet頁的數據。 讀取指定行、列的數據 往一個空白的excel文檔寫數據 往一

應用統計學R語言實現學習筆記——案例實踐

Chapter 14 Case and Practice 本篇是第十四章,內容是案例與實踐。這裡其實是對我公選課的作業做了個彙總。 1 描述性統計與抽樣分佈 1.一種袋裝食品用生產線自動裝填,每袋重量大約為50g,但由於某些原因,每袋重量不會恰好

java學習筆記冒泡選擇排序

冒泡與選擇排序 一.氣泡排序BubbleSort 氣泡排序是一種比較經典的排序演算法,在很多時候都能夠用到,氣泡排序的原理是相鄰的兩個元素進行比較,小的放前面,大的放後面 我們可以看一下排序的過程 ps:圖片比較小大家點開看大圖 java原始

python入門:面向對象屬性、方法、繼承

mage eat div 實例變量 統一 object 地址 面向對象 實例方法 任何東西1)屬性(特征:通常可以用數據來描述)(類變量和實例變量)2)可以做一些動作(方法)類來管理對象的數據。屬性:類變量和實例變量(私有變量)方法: 1)實例方法 2)類方法

Python基礎

今日主要內容 裝飾器擴充套件 有參裝飾器 多個裝飾器裝飾一個函式 遞迴 一、裝飾器擴充套件 (一)含有引數的裝飾器 先來回顧一下裝飾器的標準模式 def wrapper(fn): def inner(*args, **kwargs): """擴充套件內容""" ret =

04Groovy語法-----字串

Groovy中的字串 a = ‘abc”DEF”’ //單引號與雙引號的巢狀(可以相互巢狀) 字串的操作 索引 def str = ‘GroovyIS a Good’ str[4]//同str.getAt(4) 輸出v str[-1] //從

Python學習筆記高階變數型別--字串

1、字串定義 字串 就是 一串字元,是程式語言中表示文字的資料型別   在Python中可以使用 一對雙引號"或者一對單引號'定義一個字串 雖然可以使用\"或者\’定義字串 如果字串內部需要使用',可以使用”定義字串 可以使用 索引 獲取一個字串中

Python資料處理之 Pandas 匯入匯出

pandas可以讀取與存取的資料格式有很多種,像csv、excel、json、html與pickle等…, 詳細請看官方說明檔案 一、讀取csv 下面的例子假設當前路徑中有xxx.csv檔案: >>> import pandas as pd >>

python 入門之 – 深度copy 資料型別記憶體地址

在深入瞭解 python 的 copy() 方法之前先回顧以前以前學過的變數賦值,如: a = 123123 b = a print(b) 毫無疑問,在變數中我可以直接以等於號來複制一個值出來,打印出來的是和 a 相等的值,如:123123,但是在陣列中為什麼用這種方法不行,最後找

python/pandas資料探勘-groupby,聚合,分組級運算

groupby import pandas as pd df = pd.DataFrame({'key1':list('aabba'), 'key2': ['one','two','one','two','one'],

python/pandas資料分析-聚合分組運算例項

用特定於分組的值填充缺失值 用平均值去填充nan s=pd.Series(np.random.randn(6)) s[::2]=np.nan s 0 NaN 1 -0.1181

python/pandas資料探勘-groupby,聚合,分組級運算---很全

groupby import pandas as pd df = pd.DataFrame({'key1':list('aabba'), 'key2': ['one','two','one','two','one'],

python介面自動化-封裝呼叫--函式和引數化詳解

簡介   前面雖然實現了引數的關聯,但是那種只是記流水賬的完成功能,不便於維護,也沒什麼可讀性,隨著水平和技能的提升,再返回頭去看前邊寫的程式碼,簡直是慘不忍睹那樣的程式碼是初級入門的程式碼水平都達不到。接下來這篇由我帶領小夥伴們把每一 個滑鼠點選動作寫成一個函式,這樣更方便維護了,而且可讀性也高,後期其

全棧JavaScript之路HTML5 中class屬性相關的擴充

mov html5 表示 方法 popu dom add data- token 1. getElementByClassName() :支持getElementsByClassName()方法的瀏覽器有IE 9+、Firefox 3+、Safari

python selenium-webdriver 標簽頁切換

例子 int 道理 .get es2017 http code 按鈕 style   測試過程中有時候會遇到點擊某個按鈕或者鏈接會彈出新的窗口,這時候我們的操作的頁面還保持著最初打開頁面,但是此時我們需要操作新打開的頁面上的功能,這個時候我們需要切換一下標簽頁 。   其

MySQL之數據備份還原

pic 還原 mysql .com ace sql .cn uid 數據備份 http://pic.cnhubei.com/space.php?uid=4614&do=album&id=1719909http://pic.cnhubei.com/space.