python 字典、列表、元组、字符串操作方法、正则表达式

列表

创建连续的list

L = range(1,5)   #即 L=[1,2,3,4],不含最后一个元素
L = range(1, 10, 2) #即 L=[1, 3, 5, 7, 9]
L = range(4, 0 ,-1) #即L=4,3,2,1

list的方法

L.append(var)  #追加元素
L.insert(index,var)
L.pop(var)   #返回最后一个元素,并从list中删除之
L.remove(var)  #删除第一次出现的该元素
L.count(var)  #该元素在列表中出现的个数
L.index(var)  #该元素的位置,无则抛异常 
L.extend(list) #追加list,即合并list到L上
L.sort()    #排序
L.reverse()   #倒序
list 操作符:,+,*,关键字del
a[1:]    #片段操作符,用于子list的提取
[1,2]+[3,4] #为[1,2,3,4]。同extend()
[2]*4    #为[2,2,2,2]
del L[1]  #删除指定下标的元素
del L[1:3] #删除指定下标范围的元素

python内置类型

len(list)   #list的长度。实际该方法是调用了此对象的__len__(self)方法。

join():以字符作为分隔符,将字符串中所有的元素合并为一个新的字符串

new_str = '-'.join('Hello')
print(new_str)

H-e-l-l-o

三引号

三引号让程序员从引号和特殊字符串的泥潭里面解脱出来,自始至终保持一小块字符串的格式是所谓的WYSIWYG(所见即所得)格式的。

print("The \t is a tab")
print('I\'m going to the movies')
print('''"""lsllls""""""''')

元组

#当元组中元素个数与变量个数不一致时
#定义一个元组,包含5个元素
t4 = (1,2,3,4,5)

#将t4[0],t4[1]分别赋值给a,b;其余的元素装包后赋值给c
a,b,*c = t4

print(a,b,c)
print(c)
print(*c)

字典

dictionary的方法

D.get(key, 0)    #同dict[key],多了个没有则返回缺省值,0。[]没有则抛异常
D.has_key(key)   #有该键返回TRUE,否则FALSE
D.keys()      #返回字典键的列表
D.values()
D.items()
D.update(dict2)   #增加合并字典
D.popitem()     #得到一个pair,并从字典中删除它。已空则抛异常
D.clear()      #清空字典,同del dict
D.copy()      #拷贝字典
D.cmp(dict1,dict2) #比较字典,(优先级为元素个数、键大小、键值大小)

D.setdefault(character, 0) #设置默认值

字符串

string模块,还提供了很多方法,如

S.find(substring, [start [,end]]) #可指范围查找子串,返回索引值,否则返回-1
S.rfind(substring,[start [,end]]) #反向查找
S.index(substring,[start [,end]]) #同find,只是找不到产生ValueError异常
S.rindex(substring,[start [,end]])#同上反向查找
S.count(substring,[start [,end]]) #返回找到子串的个数
S.lowercase()
S.capitalize()   #首字母大写
S.lower()      #转小写
S.upper()      #转大写
S.swapcase()    #大小写互换
S.split(str, ' ')  #将string转list,以空格切分
S.join(list, ' ')  #将list转string,以空格连接

处理字符串的内置函数

len(str)        #串长度
cmp("my friend", str)  #字符串比较。第一个大,返回1
max('abcxyz')      #寻找字符串中最大的字符
min('abcxyz')      #寻找字符串中最小的字符

string的转换

oat(str) #变成浮点数,float("1e-1") 结果为0.1
int(str)    #变成整型, int("12") 结果为12
int(str,base)  #变成base进制整型数,int("11",2) 结果为2
long(str)    #变成长整型,
long(str,base) #变成base进制长整型,

‘’’、、、、、、、’’'所看即所得

字符串方法 join()和 split()

', '.join([‘cats’, ‘rats’, ‘bats’])
‘My name is Simon’.split() 默认情况下,字符串’My name is Simon’按照各种空白字符分割,诸如空格、制表
符或换行符

用 rjust()、ljust()和 center()方法对齐文本

center()字符串方法与 ljust()与 rjust()类似,但它让文本居中,而不是左对齐或
右对齐。

>>> 'Hello'.rjust(10)
' Hello'
>>> 'Hello'.rjust(20, '*')
'***************Hello'
>>> 'Hello'.ljust(20, '-')
'Hello---------------'
>>> 'Hello'.center(20)
' Hello '
>>> 'Hello'.center(20, '=')
'=======Hello========'

Numpy

方法总汇

pandas

pandas的series和dataFrame

入门教学

正则表达式

finditer跟findall差不多返回的是迭代器
seach返回的是match处对象.group()拿数据
match是从头开始

#第一种:
result = re.findall('a..',text)
#第二种:
obj = re.compile(r"\d+")
res = obj.finditer(text)

在这里插入图片描述

给所想去的价格名字,然后取出名字的内容👀(?p正则)放在括号的最前面
在这里插入图片描述

\d 0 到 9 的任何数字
\D 除 0 到 9 的数字以外的任何字
\w 任何字母、数字或下划线字符(可以认为是匹配“单词”字符)
\W 除字母、数字和下划线以外的任何字符
\s 空格、制表符或换行符(可以认为是匹配“空白”字符)
\S 除空格、制表符和换行符以外的任何字符

with open('poem.txt','r',encoding='utf-8') as fi:
    text = fi.read()
# result = re.findall('a..',text)
# result = re.findall(' *([Aa][a-z]{2}) ',text)#加括号表示最后输出只要括号里面的就可以了
#{}表示有多少个
# result = re.findall(' ([Aa][a-z]{2}) |([Aa][a-z]{2}) ',text)
#会打印两个字符
result = re.findall('\w{3,5}',text)#匹配三到五个的字符

正则表达式

通配字符

.(句点)字符称为“通配符”。它匹配除了换行之外的所有字符。句点字符只匹配一个字符

贪心和非贪心匹配

  • 向 re.compile()传入一个字符串值,表示正则表达式,它将返回一个 Regex 模式
    对象(或者就简称为 Regex 对象)。
  • 添加括号将在正则表达式中创建“分组”:(\d\d\d)-(\d\d\d-\d\d\d\d)
greedyHaRegex = re.compile(r'(Ha){3,5}')
nongreedyHaRegex = re.compile(r'(Ha){3,5}?')
#选择
 batRegex = re.compile(r'Bat(wo)?man')
  • 问号在正则表达式中可能有两种含义:声明非贪心匹配或表示可选的
    分组。这两种含义是完全无关的。

用星号匹配零次或多次,用花括号匹配特定次

  • *(称为星号)意味着“匹配零次或多次”,即星号之前的分组,可以在文本中出现任意次。
    batRegex = re.compile(r’Bat(wo)*man’)
    mo1 = batRegex.search(‘The Adventures of Batman’)
    mo1.group()

    res = re.search(r’Bat(wo)*man’,‘The Adventures of Batman’)

  • +(加号)则意味着“匹配一次或多次”

  • 用花括号匹配特定次

findall()方法

  • findall()方法将返回一组字符串,包含被查找字符串中的所有匹配。
# re. compile()
compile_re = re.compile(r'r[ua]n')
res = compile_re.findall('run ran ren')
print(res)
>>> ['run', 'ran']

正则表达式符号

  • ?匹配零次或一次前面的分组。
  • *匹配零次或多次前面的分组。
  • +匹配一次或多次前面的分组。
  • {n}匹配 n 次前面的分组。
  • {n,}匹配 n 次或更多前面的分组。
  • {,m}匹配零次到 m 次前面的分组。
  • {n,m}匹配至少 n 次、至多 m 次前面的分组。
  • {n,m}?或*?或+?对前面的分组进行非贪心匹配。
  • ^spam 意味着字符串必须以 spam 开始。
  • spam$意味着字符串必须以 spam 结束。
  • .匹配所有字符,换行符除外。
  • \d、\w 和\s 分别匹配数字、单词和空格。
  • \D、\W 和\S 分别匹配出数字、单词和空格外的所有字符。
  • [abc]匹配方括号内的任意字符(诸如 a、b 或 c)。
  • [^abc]匹配不在方括号内的任意字符。、

.*?非贪婪
.*贪婪
“.*?” 匹配双引号里面的内容

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值