Python/Pandas(十四)-字符串与正则

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

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 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}'

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

regex.findall(text)

['dave@google.com', 'steve@gmail.com', 'rob@gmail.com', 'ryan@yahoo.com']

m=regex.search(text)
m
<_sre.SRE_Match object; span=(6, 21), match='dave@google.com'>

text[m.start():m.end()]
'dave@google.com'

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('wesm@bright.net')
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

这里写图片描述

目录
相关文章
|
12天前
|
Python
1167: 分离字符串(PYTHON)
1167: 分离字符串(PYTHON)
|
28天前
|
数据格式 Python
如何使用Python的Pandas库进行数据透视图(melt/cast)操作?
Pandas的`melt()`和`pivot()`函数用于数据透视。基本步骤:导入pandas,创建DataFrame,然后使用这两个函数转换数据格式。示例代码展示了如何通过`melt()`转为长格式,再用`pivot()`恢复为宽格式。输入数据是包含&#39;Name&#39;和&#39;Age&#39;列的DataFrame,最终结果经过转换后呈现出不同的布局。
39 6
|
28天前
|
数据挖掘 数据处理 索引
如何使用Python的Pandas库进行数据筛选和过滤?
Pandas是Python数据分析的核心库,其DataFrame数据结构便于数据操作。筛选与过滤数据主要包括:导入pandas,创建DataFrame,通过布尔索引、`query()`或`loc[]`、`iloc[]`方法筛选。
|
29天前
|
数据处理 Python
如何使用Python的Pandas库进行数据排序和排名?
Pandas在Python中提供数据排序和排名功能。使用`sort_values()`进行排序,如`df.sort_values(by=&#39;A&#39;, ascending=False)`进行降序排序;用`rank()`进行排名,如`df[&#39;A&#39;].rank(ascending=False)`进行降序排名。多列操作可传入列名列表,如`df.sort_values(by=[&#39;A&#39;, &#39;B&#39;], ascending=[True, False])`。
23 6
|
25天前
|
BI 数据处理 索引
Pandas基本操作:Series和DataFrame(Python)
Pandas基本操作:Series和DataFrame(Python)
95 1
|
1天前
|
数据采集 SQL 数据可视化
Python数据分析工具Pandas
【4月更文挑战第14天】Pandas是Python的数据分析库,提供Series和DataFrame数据结构,用于高效处理标记数据。它支持从多种数据源加载数据,包括CSV、Excel和SQL。功能包括数据清洗(处理缺失值、异常值)、数据操作(切片、过滤、分组)、时间序列分析及与Matplotlib等库集成进行数据可视化。其高性能底层基于NumPy,适合大型数据集处理。通过加载数据、清洗、分析和可视化,Pandas简化了数据分析流程。广泛的学习资源使其成为数据分析初学者的理想选择。
4 1
|
3天前
|
Python
python学习-函数模块,数据结构,字符串和列表(下)
python学习-函数模块,数据结构,字符串和列表
25 0
|
4天前
|
数据采集 Python
python学习9-字符串
python学习9-字符串
|
12天前
|
Java 索引 Python
Python标准数据类型-字符串常用方法(下)
Python标准数据类型-字符串常用方法(下)
19 1
|
12天前
|
XML 编解码 数据格式
Python标准数据类型-String(字符串)
Python标准数据类型-String(字符串)
23 2

热门文章

最新文章